Я запускаю несколько приложений flask на сервере Ubuntu 18.04 с nginx и рабочими uwsgi в python 3.6. Общая архитектура описана в этом посте .
После развертывания новой версии «myapp» приложение незаметно перестало работать. Журналы, сгенерированные uwsgi, показывают ужасающую ошибку «no python application found». Вызов URL-адреса привел к «внутренней ошибке сервера».
Вызов приложения непосредственно с терминала от имени обычного пользователя root с python3 myapp.py
в активированной виртуальной среде работал нормально. Я предположил, что uwsgi вызывает приложение как www-data и попробовал sudo -u www-data python3 myapp.py
. Наконец, приложение отказывается запускаться.
(env) user@server:~/projects/myapp$ python3 myapp.py
* Serving Flask app "MyApp" (lazy loading)
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)
^C(env) user@server:~/projects/myapp$ sudo -u www-data python3 myapp.py
Traceback (most recent call last):
File "myapp.py", line 20, in <module>
import post
File "/home/oliver/projects/myapp/post.py", line 5, in <module>
import qrcode
ModuleNotFoundError: No module named 'qrcode'
Я удалил pip3 и повторно установил qrcode [pil] в активированной среде. Я даже sudo установил qrcode [pil] по всей системе в отчаянии.
Итак, мой вопрос: есть ли способ установить библиотеку qrcode [pi] так, чтобы сценарий мог импортировать ее как www-data? Я предполагаю, что сценарий www-data в основном используется для отладки?
Большое спасибо за вашу помощь!