Как устранить ошибки импорта при попытке развернуть Flask с использованием WSGI на Apache2
У меня проблема с развертыванием приложения фляги на apache2 с помощью wsgi. Я разместил журналы ошибок и файлы конфигурации ниже. Я пытался переместить вещи, переименовать их и т. Д., Но все они дают мне внутреннюю ошибку сервера. Не уверен, почему я получаю ошибку импорта. Любой вклад / предложения приветствуются, спасибо!
Вот мой apache error.log
[Sun Sep 12 20:47:59 2010] [error] [client] mod_wsgi (pid=9753): Target WSGI script '/sites/flaskfirst/wsgi.py' cannot be loaded as Python module.
[Sun Sep 12 20:47:59 2010] [error] [client] mod_wsgi (pid=9753): Exception occurred processing WSGI script '/sites/flaskfirst/wsgi.py'.
[Sun Sep 12 20:47:59 2010] [error] [client] Traceback (most recent call last):
[Sun Sep 12 20:47:59 2010] [error] [client] File "/sites/flaskfirst/wsgi.py", line 1, in <module>
[Sun Sep 12 20:47:59 2010] [error] [client] from app import app as application
[Sun Sep 12 20:47:59 2010] [error] [client] ImportError: No module named app
wsgi.py
# This is wsgi.py
from app import app as application
app.py
# This is app.py
from flask import Flask, render_template
import settings
app = Flask(__name__)
app.debug = settings.DEBUG
from views.homepage import *
from views.events import *
from views.submit import *
from views.feed import *
if __name__ == "__main__":
app.run()
Вот основы дерева каталогов, чтобы дать вам представление.
/flaskfirst/
/static/
/templates/
/views/
__init__.py
app.py
wsgi.py
Вот файл виртуального хоста apache
<VirtualHost *:80>
ServerAdmin sreustle@gmail.com
ServerName crath.org
DocumentRoot /sites/flaskfirst
# WSGI Settings
WSGIScriptAlias / /sites/flaskfirst/wsgi.py
WSGIDaemonProcess flaskfirst user=sreustle group=general processes=1 threads=10
WSGIProcessGroup flaskfirst
# Static Directories
Alias /static /sites/flaskfirst/static/
<Location "/static">
SetHandler None
</Location>
</VirtualHost>
2 ответа
Благодаря zarf
а также damjan
на irc.freenode.org в #pocoo они смогли помочь мне исправить это. Проблема заключалась в том, что PythonPath не был корректным. Мы исправили это с помощью следующего wsgi.py
import sys
sys.path.insert(0, "/sites/flaskfirst")
from app import app
application = app
Я использовал ваше решение, чтобы оно работало, но оно продолжало дублировать путь в sys.path (вы можете записать его, чтобы увидеть, случится ли это с вами), поэтому я сделал небольшую модификацию:
import sys
flaskfirst = "/sites/flaskfirst"
if not flaskfirst in sys.path:
sys.path.insert(0, flaskfirst)
from app import app
application = app
Таким образом, он включается только один раз