ImportError:无法导入名称' app'

时间:2014-07-29 23:01:39

标签: python apache mod-wsgi wsgi

我已经为此工作了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。

1 个答案:

答案 0 :(得分:7)

在被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答案中看到这种结构,但这可能是因为我的特定项目结构。