1

几周前,我能够使用 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)):
4

2 回答 2

2

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

于 2010-08-18T08:19:48.480 回答
0

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

我找到了从 Python 脚本到带有 py2app 的便携式 Mac 应用程序,并将精简的解决方案放在这里:

编辑发生此错误的文件(对我来说,它位于虚拟环境文件夹中,名为 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. 再次构建您的应用程序,它现在应该可以工作了

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

于 2015-01-22T13:07:42.023 回答