UWSGI сбой без модуля с именем encoding Error

Я пытаюсь настроить uWSGI с помощью Pyramid, но я получаю эту ошибку при попытке 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)

Я также проверил этот ответ и этот

Ранее я установил uWSGI, когда мой virtualenv не был активен, но затем я установил его правильно и удалил исполняемый файл и файлы py из предыдущей установки.

Есть ли способ получить подробные журналы, пожалуйста, дайте мне знать, если есть. заранее спасибо

Ответ 1

в моем случае это было в основном потому, что я использовал python 2.7 в качестве основного интерпретатора, а uwsgi выбирал плагин pyhon3. Вам может потребоваться принудительно использовать его:

= python32 плагинов

где python32 - соответствующее имя для вашего плагина pythhon3.

Вы проверили это: плагин uwsgi python3 не работает?

Ответ 2

Убедитесь, что

virtualenv = /root/path/to/virtualenv

указывает на правильный путь. Я решил свою ошибку, установив этот туманный путь.

Ответ 3

Я также столкнулся с этой проблемой сегодня, и я попытался установить plugins=python34, но он не работал на Ubuntu 14.04 и Python 3.4.3

Вот что я сделал, чтобы исправить это:

  • sudo pip uninstall uwsgi

  • что-то пойдет не так, когда я запустил sudo pip install uwsgi и запустил это сначала:

    sudo apt-get install python-dev

  • (sudo)pip install uwsgi

Ответ 4

Просто такая же проблема. После этого я понял, что я установил uwsgi с pip install uwsgi в virtualenv. Как только я покинул virtualenv, я установил uwsgi на локальную систему с помощью pip3 install uwsgi (заметьте, я написал pip вместо pip3). Поэтому я удалил с помощью pip3 uninstall uwsgi, и я повторил с pip install uwsgi. Работал как Очарование.

Ответ 5

Запустите команду uwsgi (с вашими параметрами), как в следующей строке:

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

Вы найдете проблемы.

Вы пропустили свой модуль param?

Ответ 6

Я обнаружил похожее сообщение об ошибке, но с изменением версии Python:

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

Это произошло из-за попытки использовать виртуальную среду python3.6, но uwsgi настраивается для python3.4. Я переустанавливал виртуальную среду, используя python3.4, и все было хорошо.

Ответ 7

Основываясь на ответе Эдварда, я вместо этого переустановил uWSGI с pip3.6 вместо pip3, Python 3.4.8 является Python 3 по умолчанию на сервере:

$ python3 --version
Python 3.4.8