uWSGI не работает с ошибкой кодирования без модуля с именем

Я пытаюсь настроить 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 был установлен, когда среда была активной. Я также проверил, что в библиотеке моей виртуальной среды есть пакет с именем encoding (указывающий на мою основную установку python3.2)

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

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

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


person Dev Maha    schedule 29.04.2013    source источник
comment
Ниже приведены отличные ответы, указывающие на то, что причиной может быть virtualenv. Другим потенциальным кандидатом является устаревший байт-код: с моей стороны, байт-код Python 3.5 мешал только что обновленной системе с Python 3.6. Используйте такие команды, как pyclean, чтобы удалить файлы байт-кода.   -  person benjaoming    schedule 17.02.2020


Ответы (9)


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

плагины = python32

где python32 — это подходящее имя для вашего плагина python3.

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

person jb.    schedule 29.04.2013

Проверь это

virtualenv = /root/path/to/virtualenv

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

person Louis M    schedule 16.09.2016
comment
Хотя это может показаться очевидным, сегодня я попался на эту удочку. С какой стати не может быть сообщения об ошибке, указывающего на то, что виртуальный путь не существует? Только Бог и uwsgi знают ответ на этот вопрос - person John Paraskevopoulos; 13.12.2017

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

person Albêr    schedule 03.06.2016

Я также столкнулся с этой проблемой сегодня, и я попытался установить 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

person bovenson    schedule 23.04.2016

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

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

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

Вы пропустили свой параметр модуля?

person gzerone    schedule 26.11.2014

У меня была аналогичная проблема. В моем случае проблема была в uid, guid параметрах uwsgi.ini. У пользователя www-data не было разрешения на запуск python в virtualenv.

person Alex Black    schedule 24.02.2020
comment
Это на самом деле не отвечает на вопрос. Если у вас есть другой вопрос, вы можете задать его, нажав Задать вопрос. Вы также можете добавить награду, чтобы привлечь больше внимания к этому вопросу, как только у вас будет достаточно репутация. – Из обзора - person Raf; 24.02.2020
comment
@Раф что? Это ответ. Неправильные разрешения для пользователя uwsgi при запуске вызовут аналогичную ошибку ImportError: No module named encodings - person Alex Black; 25.02.2020

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

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

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

person Edward Moffett    schedule 26.05.2018

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

$ python3 --version
Python 3.4.8
person dtk    schedule 18.08.2019

Проверьте путь virtualenv. Убедитесь, что вы не используете что-то вроде этого: ~/.virtualenvs/xxx.

Символ ~ указывает на домашний каталог пользователя. Таким образом, у разных пользователей этот путь будет относиться к разным позициям.

Если вы не очень уверены, переместите virtualenv в такие места, как /home/.virtualenvs.

person folkboat    schedule 04.02.2020