2011-11-23 14 views
7

subscribeという1つのアプリを持つDjangoプロジェクトがあります。ルートurls.pyで、私はsubscribeurls.pyからインクルードを使用します。Django uwsgiインポートエラー

私はINSTALLED_APPSsubscribeに入れてsubscribeさんurls.pyに私は自分の意見を呼び出すためのsubscribe.views.<name>を使用しています。サーバーをpython manage.py runserverとして実行すると、ローカルですべて正常に動作します。しかし、サーバがvirtualenvでnginx + uwsgiを実行すると、私はImportError: No module named subscribeを得ました。 subscribeproject.subscribeに変更してINSTALLED_APPSに、subscribeurls.pysubscribe.views.<name>からproject.subscribe.views.<name>に変更すると問題なく動作します。

uwsgi設定:

[uwsgi] 
socket = 127.0.0.1:9003 
workers = 2 
master = true 
virtualenv = /home/user/python 
chdir = /home/user 
env = DJANGO_SETTINGS_MODULE=project.settings 
module = django.core.handlers.wsgi:WSGIHandler() 
daemonize = /home/user/uwsgi.log 

なぜ私は絶対パスのインポートとどのように私はvirtualenvのバックnginxの+ uwsgi上の相対的にそれを変更することができますを使用する必要がありますか?

+0

はどちらか、すでに含まvirtualenvの起動スクリプトを介して、またはそれ以外の場合は –

+0

私の起動スクリプトあなたのpythonのパスに 'project'を追加それは: sys.path.insert(0、 '/ home/user/project') – ZedXter

+0

__init__.pyをパッケージとしたDjangoの脅威フォルダとyoあなたの 'wsgi'スクリプトで'/home/user/project'をルートディレクトリとして設定するので、 'python manage.py runserver'が動作するのと同じように動作するはずです。 –

答えて

7

あなたのuwsgi設定にはpythonpath=/path/where/lives/settings.py/ディレクティブが含まれている必要があります。したがって、pythonインタプリタはあなたのアプリケーションの場所を知ります。

uwsgi設定オプションについてさらに詳しく:

+0

あなたの答えと非常に有用なリンクありがとう! – ZedXter

+0

Afこれを理解しようと無数の時間を費やしていたが、あなたの答えの表現が助けになった。どうもありがとう :) – Pztar

関連する問題