2011-07-17 20 views
3

Apache/WSGIでVirtualEnvを使用するのに問題があります。VirtualEnvを使用するためのApacheとPython WSGIの設定

import site 
site.addsitedir('/sites/mysite/virtpy/lib/python2.6/site-packages') 

http://www.foxhop.net/django-virtualenv-apache-mod_wsgiから):私は私のWSGIファイルに(サーバー上のパスがターゲットvirtualenvの中のsite-packagesの実際の位置を指している)は、次の2行を追加しています。私はブラウザにURLをロードしようとすると、しかし、私は、Apacheのログの確認500を得る:

[Sun Jul 17 11:07:11 2011] [error] [client 94.170.105.142]  app = import_module(appname) 
[Sun Jul 17 11:07:11 2011] [error] [client 94.170.105.142] File "/usr/local/lib/python2.6/dist-packages/django/utils/importlib.py", line 35, in import_module 
[Sun Jul 17 11:07:11 2011] [error] [client 94.170.105.142]  __import__(name) 
[Sun Jul 17 11:07:11 2011] [error] [client 94.170.105.142] TemplateSyntaxError: Caught ImportError while rendering: No module named tagging 
[Sun Jul 17 11:07:11 2011] [debug] mod_deflate.c(615): [client 94.170.105.142] Zlib: Compressed 629 to 387 : URL/

だから私はvirtualenvのがロードされていないことを推測します。誰でもApache/WSGIに正しいvirtualenvを使う方法を知っていますか?

UPDATE

私はケンのアドバイス、次のdjango.wsgiを更新しましたが、今私はApacheのログに

[Sun Jul 17 16:46:36 2011] [info] [client 94.170.105.142] mod_wsgi (pid=11260, process='', application='igniteflow-django.com:8090|'): Loading WSGI script '/sites/igniteflow/apache/django.wsgi'. 
[Sun Jul 17 16:46:36 2011] [error] [client 94.170.105.142] mod_wsgi (pid=11260): Target WSGI script '/sites/igniteflow/apache/django.wsgi' cannot be loaded as Python module. 
[Sun Jul 17 16:46:36 2011] [error] [client 94.170.105.142] mod_wsgi (pid=11260): Exception occurred processing WSGI script '/sites/igniteflow/apache/django.wsgi'. 
[Sun Jul 17 16:46:36 2011] [error] [client 94.170.106.142] Traceback (most recent call last): 
[Sun Jul 17 16:46:36 2011] [error] [client 94.170.105.142] File "/sites/igniteflow/apache/django.wsgi", line 5, in <module> 
[Sun Jul 17 16:46:36 2011] [error] [client 94.170.105.142]  execfile(activate_this, dict(__file__=activate_this)) 
[Sun Jul 17 16:46:36 2011] [error] [client 94.170.105.142] IOError: [Errno 13] Permission denied: '/root/.virtualenvs/igniteflow/bin/activate_this.py' 

を次のエラーを取得しています私はvirtualenvのは、ルートとApacheであるためであると仮定権限がありませんか?私はroot:www-dataというフォルダを作りましたが、問題は解決していません。助言がありますか?

+0

タグ付けライブラリは、仮想環境の 'site-packages'ディレクトリにありますか?あなたのenvをどのように設定するかによって、サイトパッケージのフォルダではなく、srcからインストールされるライブラリがあります –

答えて

8

私のapp.wsgiファイルには次のようなものがあります。この例では、/ opt/ve/ve_name /の下に私の仮想環境が置かれている場所に置くように変更する必要があります。

import os 
# activate virtualenv 
activate_this = os.path.expanduser("/opt/ve/ve_name/bin/activate_this.py") 
execfile(activate_this, dict(__file__=activate_this)) 
+0

IOError:[Errno 13]アクセス権が拒否されました: '/root/.virtualenvs/site1/bin/activate_this.py'どのように私はどこにApacheはアクセス権を持つvirtualenvをインストールすることができます知っている?私はフォルダのルートを作ろうとしました:www-dataしかし変更なし – igniteflow

+1

あなたはvirtualenvwrapperを使っているようです。 virtualenvwrapperを使ってインストールした場所を変更するには、WORKON_HOMEの値を変更する必要があります。エクスポートWORKON_HOME =/opt/Envs;ディレクトリが存在していることを確認し、最初から作成しない限り、現在のenvをそこに移動する必要があります。私はvirtualenvwrapperを使用して気にしません。virtualenvを使用するだけで、自分の好きなところに自分のveを置くことができますが、より手作業が必要です。 –

+0

ありがとう!それはそれを働かせました。私はbashrcのWORKON_HOMEを/sites/.virtualenvに設定し、mkvirtualenv --no-site-packagesを使ってvirtualenvを再作成しました。これで全て起動して稼働しています – igniteflow

関連する問題