AirWorker
@AirWorker
Node.js full stack web dev

Python3+uwsgi на Ubuntu 16.04. No module named 'encodings' — как узнать в чем дело?

Ubuntu 16.04, Python3, virtualenvwrapper, uwsgi. Python и uwsgi - стандарнтые системные.

Ошибка при запуске сервиса uwsgi, в логе ключевые строчки -

Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'


UPD!!!: Убрал строчку
home=/root/.virtualenvs/vek/bin/python
и все заработало. В крайнем случае буду использовать голобальное окружение Питона, но в чем же все-таки проблема?


Куда только уже не рыл, мысли кончились. В чем может быть проблема и как ее вообще искать (логи детализировать, что-то еще отдиагностировать)?

Все ключевые подробности, если чего не хватает - добавлю.

# cat /etc/uwsgi/apps-enabled/vek.ini 
[uwsgi]
plugins=python3
chdir=/srv/vek/django
module=vek.wsgi:application
home=/root/.virtualenvs/vek/bin/python

# apt-get install uwsgi-plugin-python3 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
uwsgi-plugin-python3 is already the newest version (2.0.12-5ubuntu3).
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.

# cat /var/log/uwsgi/app/vek.log
...
Thu Jun 23 17:12:52 2016 - *** Starting uWSGI 2.0.12-debian (64bit) on [Thu Jun 23 17:12:51 2016] ***
Thu Jun 23 17:12:52 2016 - compiled with version: 5.3.1 20160412 on 13 April 2016 08:36:06
Thu Jun 23 17:12:52 2016 - os: Linux-4.4.0-24-generic #43-Ubuntu SMP Wed Jun 8 19:27:37 UTC 2016
Thu Jun 23 17:12:52 2016 - nodename: vek-dverey.ru
Thu Jun 23 17:12:52 2016 - machine: x86_64
Thu Jun 23 17:12:52 2016 - clock source: unix
Thu Jun 23 17:12:52 2016 - pcre jit disabled
Thu Jun 23 17:12:52 2016 - detected number of CPU cores: 1
Thu Jun 23 17:12:52 2016 - current working directory: /
Thu Jun 23 17:12:52 2016 - writing pidfile to /run/uwsgi/app/vek/pid
Thu Jun 23 17:12:52 2016 - detected binary path: /usr/bin/uwsgi-core
Thu Jun 23 17:12:52 2016 - setgid() to 33
Thu Jun 23 17:12:52 2016 - setuid() to 33
Thu Jun 23 17:12:52 2016 - chdir() to /srv/vek/django
Thu Jun 23 17:12:52 2016 - your processes number limit is 3912
Thu Jun 23 17:12:52 2016 - your memory page size is 4096 bytes
Thu Jun 23 17:12:52 2016 - detected max file descriptor number: 1024
Thu Jun 23 17:12:52 2016 - lock engine: pthread robust mutexes
Thu Jun 23 17:12:52 2016 - thunder lock: disabled (you can enable it with --thunder-lock)
Thu Jun 23 17:12:52 2016 - uwsgi socket 0 bound to UNIX address /run/uwsgi/app/vek/socket fd 3
Thu Jun 23 17:12:52 2016 - Python version: 3.5.1+ (default, Mar 30 2016, 22:46:26)  [GCC 5.3.1 20160330]
Thu Jun 23 17:12:52 2016 - Set PythonHome to /root/.virtualenvs/vek/bin/python
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'

Current thread 0x00007f0abc3b7780 (most recent call first):

# /root/.virtualenvs/vek/bin/python 
Python 3.5.1+ (default, Mar 30 2016, 22:46:26) 
[GCC 5.3.1 20160330] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import encodings
>>> encodings
<module 'encodings' from '/root/.virtualenvs/vek/lib/python3.5/encodings/__init__.py'>
>>>


Подозреваю что используется какой-то не тот Питон, но в логе uwsgi версия правильная

UPD: проверил версию неправильного именования плагина:

# uwsgi<TAB key>
uwsgi           uwsgi-core      uwsgi_python3   uwsgi_python35


Видно что есть плагины uwsgi_python3 и uwsgi_python35. Попробовал изменить название плагина в ini на python35 - в логе абсолютно то же.
  • Вопрос задан
  • 6740 просмотров
Пригласить эксперта
Ответы на вопрос 2
sim3x
@sim3x
Заведи пользователя
Заведи ему директорию в /home
Положи все там
В uwsgi укажи от какого пользователя нужно запускать

Чтоб использовать plugins=python3 нужно поставить uwsgi-plugin-python3
Ответ написан
@IRIP
а где убрал строчку

home=/root/.virtualenvs/vek/bin/python
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы