【问题标题】:py2app can't find installed and included packagepy2app 找不到已安装和包含的软件包
【发布时间】: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


    【解决方案1】:

    模块 'flask'、'jinja2'、'message' 只是 .py 文件还是包含 itit.py 文件的完整包?

    尝试:

    setup(py_modules=['flask', 'jinja2', 'message']
    

    如果它们是您创建并从“Glutton.py”调用的 .py 模块

    【讨论】:

      猜你喜欢
      • 2021-09-13
      • 2019-12-16
      • 2019-11-08
      • 2017-01-29
      • 2017-05-26
      • 1970-01-01
      • 2020-04-12
      • 1970-01-01
      • 2020-10-02
      相关资源
      最近更新 更多