Не могу импортировать мои собственные .py модули в python при запуске из apache uwsgi - PullRequest
0 голосов
/ 27 июня 2018

Я хотел создать свой собственный API, поэтому я остановился на apache2, uwsgi, flask и python. Я следовал этим инструкциям здесь

Я изменил модули:

  • libapache2-mod-wsgi -> libapache2-mod-wsgi-py3
  • python-dev -> python3-dev
  • python-pip -> python3-pip

Я изменил команды:

  • sudo virtualenv whitedust -> sudo virtualenv -p python3.6 whitedust
  • источник envname / bin / activ -> источник whitedust / bin / activ

На этом этапе я продолжаю руководство в обычном режиме и система работает. Но потом, когда я попытался добавить свой собственный файл, он выдал ошибку

Apache / 2.4.18 (Ubuntu) mod_wsgi / 4.3.0 Python / 3.5.2 настроен

Apache error.log:

[Wed Jun 27 15:12:53.838360 2018] [wsgi:error] [pid 24654:tid 140042661635840] [remote 192.168.1.6:38961] mod_wsgi (pid=24654): Target WSGI script '/var/www/FlaskApp/flaskapp.wsgi' cannot be loaded as Python module.
[Wed Jun 27 15:12:53.838397 2018] [wsgi:error] [pid 24654:tid 140042661635840] [remote 192.168.1.6:38961] mod_wsgi (pid=24654): Exception occurred processing WSGI script '/var/www/FlaskApp/flaskapp.wsgi'.
[Wed Jun 27 15:12:53.838553 2018] [wsgi:error] [pid 24654:tid 140042661635840] [remote 192.168.1.6:38961] Traceback (most recent call last):
[Wed Jun 27 15:12:53.838572 2018] [wsgi:error] [pid 24654:tid 140042661635840] [remote 192.168.1.6:38961]   File "/var/www/FlaskApp/flaskapp.wsgi", line 11, in <module>
[Wed Jun 27 15:12:53.838574 2018] [wsgi:error] [pid 24654:tid 140042661635840] [remote 192.168.1.6:38961]     from FlaskApp import app as application
[Wed Jun 27 15:12:53.838577 2018] [wsgi:error] [pid 24654:tid 140042661635840] [remote 192.168.1.6:38961]   File "/var/www/FlaskApp/FlaskApp/__init__.py", line 3, in <module>
[Wed Jun 27 15:12:53.838579 2018] [wsgi:error] [pid 24654:tid 140042661635840] [remote 192.168.1.6:38961]     import utils
[Wed Jun 27 15:12:53.838587 2018] [wsgi:error] [pid 24654:tid 140042661635840] [remote 192.168.1.6:38961] ImportError: No module named 'utils'

Вот файл apache conf:

<VirtualHost *:80>
ProxyPreserveHost On
ServerAdmin webmaster@localhost

WSGIScriptAlias /api /var/www/FlaskApp/flaskapp.wsgi
<Directory /var/www/FlaskApp/FlaskApp/>
    Order allow,deny
    Allow from all
</Directory>

ProxyPass /api !
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/

ErrorDocument 404 /index.html

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Когда система работала, я проверял, где файлы __init __: py видит себя

Путь: / var / www / FlaskApp / FlaskApp

Это все работает при запуске вне apache в python или виртуальной среде

Я также пытался установить модули через pip, и они не работали

1 Ответ

0 голосов
/ 27 июня 2018

Попробуйте добавить следующие строки перед импортом в файл wsgi:

import sys
sys.path.append("/path/to/directory/containing/utils")
...