【发布时间】:2015-10-27 19:25:06
【问题描述】:
我正在尝试使用 py2app 构建一个 .app,它在本地启动一个 Flask 应用程序(目前既不是托管应用程序,也不是使用 pyinstaller 选项)。
我正在构建我的 setup.py:
python setup.py py2app --packages=jinja2,flask,message
我的 setup.py 看起来像:
from setuptools import setup
APP = ['Glutton.py']
DATA_FILES = []
PKGS = ['jinja2', 'flask', 'message']
OPTIONS = {'argv_emulation': True,
'iconfile': '/blahblahblah/glutton.icns',
'packages': PKGS
}
setup(
app=APP,
data_files=DATA_FILES,
options={'py2app': OPTIONS},
setup_requires=['py2app', 'flask', 'jinja2', 'message'],
)
但是,在控制台中,我收到了 ImportError: No module named message
尽管消息已安装,并且从 python REPL 加载正常,并且明确包含在 setup.py 和 py2app 命令行调用中。
这是完整的回溯:
10/27/15 3:34:45.195 PM Glutton[51755]: Traceback (most recent call last):
10/27/15 3:34:45.195 PM Glutton[51755]: File "/Users/alexloewi/Documents/Sites/glutton/dist/Glutton.app/Contents/Resources/Glutton.py", line 182, in <module>
10/27/15 3:34:45.195 PM Glutton[51755]: app.run(debug=True) # Can cause the tabe to open multiple times --
10/27/15 3:34:45.195 PM Glutton[51755]: File "/Users/alexloewi/Documents/Sites/glutton/dist/Glutton.app/Contents/Resources/lib/python2.7/flask/app.py", line 772, in run
10/27/15 3:34:45.451 PM Glutton[51755]: run_simple(host, port, self, **options)
10/27/15 3:34:45.451 PM Glutton[51755]: File "/Users/alexloewi/Documents/Sites/glutton/dist/Glutton.app/Contents/Resources/lib/python2.7/werkzeug/serving.py", line 708, in run_simple
10/27/15 3:34:45.640 PM Glutton[51755]: run_with_reloader(inner, extra_files, reloader_interval)
10/27/15 3:34:45.640 PM Glutton[51755]: File "/Users/alexloewi/Documents/Sites/glutton/dist/Glutton.app/Contents/Resources/lib/python2.7/werkzeug/serving.py", line 613, in run_with_reloader
10/27/15 3:34:45.640 PM Glutton[51755]: reloader_loop(extra_files, interval)
10/27/15 3:34:45.640 PM Glutton[51755]: File "/Users/alexloewi/Documents/Sites/glutton/dist/Glutton.app/Contents/Resources/lib/python2.7/werkzeug/serving.py", line 519, in _reloader_stat_loop
10/27/15 3:34:45.641 PM Glutton[51755]: for filename in chain(_iter_module_files(), extra_files or ()):
10/27/15 3:34:45.641 PM Glutton[51755]: File "/Users/alexloewi/Documents/Sites/glutton/dist/Glutton.app/Contents/Resources/lib/python2.7/werkzeug/serving.py", line 493, in _iter_module_files
10/27/15 3:34:45.641 PM Glutton[51755]: filename = getattr(module, '__file__', None)
10/27/15 3:34:45.641 PM Glutton[51755]: File "email/__init__.pyc", line 79, in __getattr__
10/27/15 3:34:45.741 PM Glutton[51755]: ImportError
10/27/15 3:34:45.741 PM Glutton[51755]: ImportError: No module named message
问题是,我只在第一个位置包含“消息”,因为当我尝试运行我的应用程序(构建时未提及“消息”)时,py2app 控制台告诉我没有这样的模块。我什至不确定是什么要求 - 我当然不知道,手动启动时一切正常。再次查看控制台,它似乎是 werkzeug,但是当我尝试也明确地包含它时(我认为 flask 会自动执行此操作),仍然找不到消息。
我最好的猜测是这是一个多 python/虚拟环境的东西,但我对此知之甚少/一无所知,而且对于 py2app 没有更深入的了解,这似乎是一个黑暗和不祥的兔子洞。
非常感谢,
【问题讨论】:
标签: python flask importerror py2app