Python скрипт не может получить доступ к библиотеке как www-data - PullRequest
0 голосов
/ 04 августа 2020

Я запускаю несколько приложений 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 в основном используется для отладки?

Большое спасибо за вашу помощь!

...