【问题标题】:Py2app Error in module graph模块图中的 Py2app 错误
【发布时间】:2015-01-22 21:07:42
【问题描述】:

几周前,我能够使用 py2app 构建应用程序。我刚刚再次尝试,在构建过程中,我被转储到 pdb 会话中,并带有下面的堆栈跟踪。

modulegraph.py 似乎存在导入问题,但我拥有最新版本。

即使是最小的测试文件,除了 sys 之外没有导入,并且使用 py2applet 创建的设置,也会发生这种情况。

我还确保运行 py2app 的 python 是 /Library 版本,而不是 /System 版本。

有什么想法吗?

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/py2app-0.4.3-py2.6.egg/py2app/build_app.py", line 589, in _run
    self.run_normal()
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/py2app-0.4.3-py2.6.egg/py2app/build_app.py", line 641, in run_normal
    mf = self.get_modulefinder()
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/py2app-0.4.3-py2.6.egg/py2app/build_app.py", line 549, in get_modulefinder
    debug=debug,
  File "build/bdist.macosx-10.6-universal/egg/modulegraph/find_modules.py", line 255, in find_modules
    find_needed_modules(mf, scripts, includes, packages)
  File "build/bdist.macosx-10.6-universal/egg/modulegraph/find_modules.py", line 180, in find_needed_modules
    mf.import_hook(mod[:-2], None, ['*'])
  File "build/bdist.macosx-10.6-universal/egg/modulegraph/modulegraph.py", line 404, in import_hook
    modules.update(self.ensure_fromlist(m, fromlist))
  File "build/bdist.macosx-10.6-universal/egg/modulegraph/modulegraph.py", line 472, in ensure_fromlist
    fromlist.update(self.find_all_submodules(m))
  File "build/bdist.macosx-10.6-universal/egg/modulegraph/modulegraph.py", line 496, in find_all_submodules
    for (path, mode, typ) in ifilter(None, imap(moduleInfoForPath, names)):
NameError: global name 'ifilter' is not defined
> /Users/justin/Desktop/test/build/bdist.macosx-10.6-universal/egg/modulegraph/modulegraph.py(496)find_all_submodules()
-> for (path, mode, typ) in ifilter(None, imap(moduleInfoForPath, names)):

【问题讨论】:

    标签: python macos py2app


    【解决方案1】:

    这似乎是一个注意到here 的问题,应该在modulegraph 的后续0.8 版本中得到修复。确保您的modulegraph 版本确实是最新的;这条路有点奇怪:build/bdist.macosx-10.6-universal/egg/modulegraph。看起来您使用的是私有副本,而不是像 py2app (/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages) 这样的普通站点包安装的副本。

    【讨论】:

      【解决方案2】:

      遇到了这个问题,但接受的答案并没有为我解决。

      我找到了From a Python script to a portable Mac application with py2app 并将精简的解决方案放在这里:

      编辑发生此错误的文件(对我来说,它位于虚拟环境文件夹中,名为 myenv),位于: myenv/lib/python2.7/site-packages/py2app/recipes/virtualenv.py 1

      myenv/lib/python2.7/site-packages/py2app/recipes/virtualenv.py

      查找函数scan_codeload_module 并在它们前面添加下划线_scan_code_load_module。再次构建您的应用程序,它现在应该可以工作了

      我知道这并不理想 - 但我现在只是想拥有一个原型,这样就可以了。 :)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-07
        • 1970-01-01
        • 2013-09-01
        相关资源
        最近更新 更多