python – ImportError:无法导入名称’app’

我一直在研究这个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答案中看到这种结构,但这可能是因为我的特定项目结构.

点赞