20

(SOに関する他の投稿は似ていますが、uwsgi + Flask + virtualenvの特定の組み合わせを持っているものはありません) (これは最も近いです)

apt-get経由でuwsgiをインストールしました。pip install wsgi も試しました。どちらも私に同じ問題を与えました。

テスト コマンド:

sudo uwsgi -s /tmp/uwsgi.sock -w myapp:app -H myvirtualenv

結果:

Python version: 2.7.4 (default, Apr 19, 2013, 18:35:44)  [GCC 4.7.3]
Set PythonHome to myvirtualenv
ImportError: No module named site

それ以外の場合は、仮想環境でアプリを実行できます。

4

8 に答える 8

24

仮想環境へのパスが間違っています。それがこのエラーの理由です。

virtualenvwrapper を使用しており、仮想環境は ~/.virtualenvs に設定されています。したがって、私の場合、 uwsgi 呼び出しは次のようになります

sudo uwsgi -s /tmp/uwsgi.sock -w myapp:app -H ~/.virtualenvs/myapp

次回誰かがこれを探しに来たときに、これが役立つことを願っています。

コメントで指摘してくれた Cody に感謝します。

于 2015-03-08T04:19:45.670 に答える
21

最初に @JRajan からの回答を参照してください。

エラーを抑制したいだけで、根本的な問題を実際に解決--no-siteしたくない場合は、コマンドまたはno-site=trueuwsgi.ini ファイルに 追加する必要があります。

于 2013-10-16T14:49:11.393 に答える
1

これは、いくつかの理由でセキュリティに悪影響を与える可能性があります。それはテストのために働きます。ただし、この正確なソリューションを本番環境で使用する前に、セキュリティを確認してください

このエラーが発生するもう 1 つの理由は、アクセス許可に関連しています。django の uWSGI の公式チュートリアルで説明されているように .ini ファイルを使用する場合、プロセスを実行しているユーザーがファイルにアクセスできないようにするユーザーとグループで ini ファイルを作成した可能性があります。

ファイルの所有者とアクセス許可、およびファイルが含まれるディレクトリ パスを確認します。必要なアクセス許可を設定するには、chown と chmod を使用します。

sudo chown -R www-data:www-data /srv

sudo chmod 0775 -R /srv

私の場合、テストにvagrantボックスを使用していました.nginxがユーザーとグループにwww-dataを使用している間、デフォルトのユーザーは「vagrant」です。プロジェクト内のすべてのファイルの所有者を www-data ユーザーとグループに設定し、vagrant ユーザーを www-data グループに追加しました。

sudo gpasswd -a vagrant www-data

これが適切なセキュリティ プラクティスであるかどうかはわかりません。そのため、システム管理者と協力して本番環境に導入する予定です。しかし、私のテスト環境では機能します。いずれにせよ、アクセス許可は、これらの問題の多くについて詳しく調べる必要があります。

于 2016-08-04T14:29:29.413 に答える
1

自作の Python バージョンが Python 3.7 に更新され、動作しなくなったときに、この問題が発生しました。私にとってうまくいったのはbrew info python、利用可能なすべてのPythonバージョンを表示することでした。を使用して Python 3.6.5 にロールバックしましたbrew switch python 3.6.5

その後、次を使用してuWSGIを再インストールしました。

pip3 uninstall uwsgi
pip3 install uwsgi

そして、それはそれを解決しました。使用していた Python のバージョンがわからない場合はbrew info python、インストール日が表示されます。また、pip3 list現在のバージョンの uWSGI がインストールされているかどうかを確認することもできます。

お役に立てれば!

于 2018-10-24T11:11:45.150 に答える
0

私は同じことに遭遇し、私の問題はuwsgiが実行されていたpythonバージョンにありました。uwsgi は python2 で実行されていましたが、私の virtualenv python パスは python3 に設定されていました。これにより競合が発生し、インストールされたサイト パッケージの検索に失敗し続けました。

uwsgi が実行されている Python のバージョンを再確認して、virtualenv に設定されているものと同じになるようにします。

于 2017-10-25T14:48:33.017 に答える