web-dev-qa-db-ja.com

NginxとuWSGI:ImportError:siteという名前のモジュールはありません

UWSGIログによると、エラーImportError: No module named siteが発生します。

test_proj.ini:

[uwsgi]
chdir = /home/%n/app
module = %n.wsgi
home = /home/%n/app/venv
master = true
processes = 10
chmod-socket = 664
socket = /home/%n/uwsgi/socket
daemonize = /home/%n/uwsgi/log
pidfile = /home/%n/uwsgi/pid

nginx:

server {
        listen 8888;
        server_name 192.168.88.187;

        # Set up Django static file serving
        location /static {
                alias /home/test_proj/app/static/;
        }

        # pass all non-static request to uWSGI
        location / {
                uwsgi_pass unix:///home/test_proj/uwsgi/socket;
                include uwsgi_params;
        }
}

pipフリーズ:

Django==1.7.1
Django-braces==1.4.0
Django-cors-headers==0.13
Django-dynamic-settings==1.1.0
Django-oauth-toolkit==0.7.2
Django-uuidfield==0.5.0
djangorestframework==3.0.0
oauthlib==0.7.2
psycopg2==2.5.4
six==1.8.0

また、uWSGIをグローバルにインストールしています。 iniファイルに何か不足していますか、それともnginxの設定が原因ですか? iniファイルのさまざまな組み合わせを試しました。

また、ini内にno-site = trueを追加してみましたが、エラーを削除して別のエラーを生成したとしても、iniファイルに追加しないでください。

私もこれに従いましたtutorialまだ運がありません。

ありがとう。

5
Koralarts

これが機能しなかった理由は、通常のuwsgiコマンドを使用してpipをインストールしたためです。マシンにPython 2&3の両方があるため、pip3を使用してuwsgiをインストールする必要があります。

私が実行したコマンド:pip3 install uwsgi

10
Koralarts

このエラーが発生するのは、homeディレクティブで指定された仮想環境でモジュール(サイト、OSなど)が見つからなかったためです。適切なバージョンのpipを使用するとうまくいったかもしれませんが、それはvirtualenvの問題を修正するためです。

1
Cody Django

Venvを使用している場合は、/usr/venv/bin/uwsgiのようにvenv内にあるuwsgiの完全パスを使用してuwsgiを実行します。デフォルトのuwsgiが別の場所にある可能性があります。

which uwsgiを試してみてください。

1
noPE