web-dev-qa-db-ja.com

uWSGIがエンコーディングエラーという名前のモジュールなしで失敗する

PyramidでuWSGIをセットアップしようとしていますが、uwsgi --ini-paste development.iniを試行すると、このエラーが発生します

Python version: 3.2.3

エラーメッセージ:

uwsgi socket 0 bound to UNIX address /tmp/uwsgi.sock fd 3
Python version: 3.2.3 (default, Oct 19 2012, 20:08:46)  [GCC 4.6.3]
Set PythonHome to /root/path/to/virtualenv
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named encodings

これが私がdevelopment.iniに持っているものです

[uwsgi]
socket = /tmp/uwsgi.sock
master = true


processes = 4

harakiri = 60
harakiri-verbose = true
limit-post = 65536
post-buffering = 8192

daemonize = ./uwsgi.log
pidfile = ./pid_5000.pid

listen = 256 

max-requests = 1000

reload-on-as = 128 
reload-on-rss = 96
no-orphans = true

log-slow = true
virtualenv = /root/path/to/virtualenv

私は以下を含む可能な限りすべてをチェックしたと思います

echo LANG:$LANG LC_CTYPE:$LC_CTYPE
LANG:en_US.UTF-8 LC_CTYPE:

私はvirtualenvを使用していて、環境がアクティブなときにuWSGIがインストールされました。私の仮想環境のlibにencodingという名前のパッケージがあることも確認しました(メインのpython3.2インストールをポイントしています)

this 回答と this もチェックしました

私は以前virtualenvがアクティブでないときにuWSGIをインストールしていましたが、それを適切にインストールし、以前のインストールから実行可能ファイルとpyファイルを削除しました。

詳細なログを取得する方法はありますか。ある場合はお知らせください。前もって感謝します

19
Dev Maha

私の場合、それは基本的にpython 2.7をメインインタープリターとして使用し、uwsgiがpyhon3プラグインを選択したためです。

plugins = python32

どこ python32は、pythhon3プラグインの適切な名前です。

これを確認しましたか: wsgi python3プラグインが機能しません

4
jb.

それを確認します

virtualenv = /root/path/to/virtualenv

正しいパスを指します。このタイプミスしたパスを修正することでエラーを解決しました。

13
Louis M

今日もこの問題に遭遇し、plugins=python34を設定しようとしましたが、Ubuntu 14.04およびPython 3.4.3では機能しませんでした。

これは私がそれを修正するためにしたことです:

  1. Sudo pip uninstall uwsgi

  2. Sudo pip install uwsgiを実行すると問題が発生し、これを最初に実行します。

    Sudo apt-get install python-dev

  3. (Sudo)pip install uwsgi

3
bovenson

ちょうど同じ問題がありました。その後気付いたのは、virtualenvにpip install uwsgiを使用してuwsgiをインストールしたことです。 virtualenvを終了したら、pip3 install uwsgiを使用してローカルシステムにuwsgiをインストールしました(pip3ではなくpipを作成したことに注意してください)。そのため、pip3 uninstall uwsgiでアンインストールし、pip install uwsgiで繰り返しました。チャームのように働いた。

3
Albêr

次の行のようにuwsgiコマンドを(オプションを指定して)実行します。

/<path-to-your-virtualenv-bin>/uwsgi --http :8008 --module project.wsgi --venv /<path-to-your-virtualenv> --chdir /<path-to-your-project>

あなたは問題を見つけるでしょう。

あなたはあなたのモジュールパラメータを見逃しましたか?

2
gzerone

同様のエラーメッセージが表示されましたが、pythonバージョンのバリエーションが含まれています。

Python version: 3.4.3 (default, Nov 28 2017, 16:44:58)  [GCC 4.8.4]

これはpython3.6仮想環境を使用しようとしたことから生じましたが、uwsgiはpython3.4用にセットアップされています。私はpython3.4を使用して仮想環境を再セットアップしましたが、すべて順調でした。

1
Edward Moffett

エドワードの答え に基づいて、代わりにuWSGIpip3.6ではなくpip3で再インストールしました、Python 3.4.8はデフォルトPython 3 on the server:

$ python3 --version
Python 3.4.8
0
dtk

virtualenvのパスを確認してください。次のようなものを使用していないことを確認してください:~/.virtualenvs/xxx

~記号は、ユーザーのホームディレクトリを指します。したがって、ユーザーが異なれば、このパスは異なる位置を参照します。

確信が持てない場合は、virtualenv/home/.virtualenvsなどの場所に移動してください。

0
folkboat

同様の問題がありました。私の場合、問題はuwsgi.iniuidguid paramsにありました。 www-dataユーザーには、virtualenvでpythonを実行する権限がありませんでした。

0
Alex Black