我一直在研究这个5个小时,看起来应该很简单.我跟着
instructions通过mod_wsgi在apache上设置了一个烧瓶应用程序,在完成它们之后我收到了一个错误
ImportError: cannot import name 'app'
从行:
from web_tool import app as application
我的wsgi文件名为web_tool.wsgi,看起来像:
import sys
sys.path.insert(0, "/path/web_tool/src/")
print(sys.version)
print(sys.path)
from web_tool import app as application
我的python版本和系统路径至少是正确的,所以我相信.
然后我的虚拟主机文件存储在apache2 / sites-available / default中,如下所示:
WSGIPythonHome /usr/local/opt/python-3.4.1
<VirtualHost *:4000>
ServerName my.servername.com
WSGIDaemonProcess web_tool user=my_username group=my_group threads=5
WSGIScriptAlias / /path/web_tool/src/web_tool/web_tool.wsgi
WSGIApplicationGroup %{GLOBAL}
<Directory /path/web_tool/src/web_tool/>
WSGIProcessGroup cnt_tool
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
如果我的wsgi文件与我的python文件一样被调用,你会看到任何错误吗?我正在运行python 3.4和mod_wsgi 3.4.
最佳答案 在被abarnert提示之后,我意识到在Flask和Apache的更大结构中它不是问题,而只是我的导入结构.所以我的解决方案让它工作就是先确保我做到了
from web_tool import web_tool as application
因为我的项目结构看起来像
/path/web_tool/src/web_tool/
web_tool.py
web_tool.wsgi
我认为命名文件夹与主python脚本相同,但同样困惑但后来我直截了当.现在上面的导入仍然无法正常工作,因为我遇到了一个模块错误但是工作原理是:
from web_tool import web_tool
application = web_tool.app
我没有在网上或任何其他SO答案中看到这种结构,但这可能是因为我的特定项目结构.