【问题标题】:py2app error: in find_needed_modules TypeError: 'NoneType' object has no attribute '__getitem__'py2app 错误:在 find_needed_modules 类型错误中:“NoneType”对象没有属性“__getitem__”
【发布时间】:2013-04-21 13:15:43
【问题描述】:

我在使用 py2app 时遇到了一些问题;出于某种原因,我开发的所有脚本总是出现相同的错误。目前我正在使用最后一个 MacPorts 版本,经过两天的测试,我无法弄清楚出了什么问题。

py2app 的 setup.py 文件之一是:

from setuptools import setup

APP = ['main.py']
OPTIONS = {'argv_emulation': True, 'includes': ['sip', 'PyQt4._qt', 'PyQt4.QtCore', 'PyQt4.QtGui'],
    'excludes': ['PyQt4.QtDesigner', 'PyQt4.QtNetwork', 'PyQt4.QtOpenGL', 'PyQt4.QtScript', 'PyQt4.QtSql', 'PyQt4.QtTest', 'PyQt4.QtWebKit', 'PyQt4.QtXml', 'PyQt4.phonon']}

setup(
      app=APP,
      options={'py2app': OPTIONS},
      setup_requires=['py2app'],
)

这是日志:

python setup.py py2app
running py2app
creating /Users/opensw/SkyDrive/SISSA/Kymograph/build/bdist.macosx-10.6-intel/python2.7-standalone/app
creating /Users/opensw/SkyDrive/SISSA/Kymograph/build/bdist.macosx-10.6-intel/python2.7-standalone/app/collect
creating /Users/opensw/SkyDrive/SISSA/Kymograph/build/bdist.macosx-10.6-intel/python2.7-standalone/app/temp
creating build/bdist.macosx-10.6-intel/python2.7-standalone/app/lib-dynload
creating build/bdist.macosx-10.6-intel/python2.7-standalone/app/Frameworks
*** using recipe: virtualenv ***
WARNING: ImportError in sip recipe ignored: No module named matplotlib-1
WARNING: ImportError in sip recipe ignored: No module named scipy-0
*** using recipe: sip ***
*** using recipe: matplotlib ***
*** using recipe: scipy ***
Traceback (most recent call last):
  File "setup.py", line 10, in <module>
    setup_requires=['py2app'],
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py", line 152, in setup
    dist.run_commands()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
    cmd_obj.run()
  File "/Users/opensw/SkyDrive/SISSA/Kymograph/py2app-0.7.3-py2.7.egg/py2app/build_app.py", line 553, in run
    self._run()
  File "/Users/opensw/SkyDrive/SISSA/Kymograph/py2app-0.7.3-py2.7.egg/py2app/build_app.py", line 741, in _run
    self.run_normal()
  File "/Users/opensw/SkyDrive/SISSA/Kymograph/py2app-0.7.3-py2.7.egg/py2app/build_app.py", line 816, in run_normal
    self.process_recipes(mf, filters, flatpackages, loader_files)
  File "/Users/opensw/SkyDrive/SISSA/Kymograph/py2app-0.7.3-py2.7.egg/py2app/build_app.py", line 710, in process_recipes
    find_needed_modules(mf, packages=rval['packages'])
  File "build/bdist.macosx-10.6-intel/egg/modulegraph/find_modules.py", line 199, in find_needed_modules
TypeError: 'NoneType' object has no attribute '__getitem__'

感谢您的帮助。

【问题讨论】:

    标签: python macos macports py2app


    【解决方案1】:

    问题是一些错误的输入已传递给算法,该算法试图检测依赖关系以便将它们打包到您的应用程序中 - 我遇到问题的地方之一是使用 github 风格的降价打包 README.md 文件。

    这是调试 setup.py 问题的一般指南,或者实际上是一般的 python 问题。

    1. 以交互模式再次运行它,即python -i setup.py py2app。一旦setup.py 退出,您会发现自己处于python 提示符中。

    2. 运行from pdb import pm; pm()。您现在应该会发现自己处于调试提示符处。

    3. 输入 up 并按回车键 - 您现在是堆栈中更高的帧 - 您可以输入 list 以查看当前帧在源代码中的位置,并输入 args 以查看传递给当前帧的参数(通常是函数或方法)。您还可以运行 python 命令来检查当前状态,并运行 pp var 来漂亮地打印该变量。

    4. 1234563导致错误的 README 文件。如果您的问题是模块导入,它可能会有所不同,但我的直觉是您会发现自己在堆栈跟踪中看到的 packages 参数上循环,当前列表项将是您的关键问题。

    【讨论】:

    • @user2105584 您是否设法使用它来解决您的问题?如果不是,我很乐意添加更多信息以改进我的答案
    • 感谢您提供的这些 - 非常有用的提示,而不仅仅是设置调试。
    • @theheadofabroom 你介意帮我解决这个问题吗?我遇到了类似的问题,我只能创建别名模式应用程序 - 而不是正常模式分发应用程序。我不断收到 sip 配方的导入错误和大量的回溯错误。我绝对没有足够的经验来调试所有这些,我相信修复是一个简单的修复。我只是不知道从哪里开始。这是我在正常模式下的原始运行:pastebin.com/dd7DUQcB,这是回溯错误行的开头pastebin.com/LUi2wRWT。我不明白为什么会这样。谢谢!
    • @gmonz 你能为此打开一个新问题并在这里放一个链接吗?
    • @theheadofabroom 我真的希望我能而且我会,但由于某种原因,我被不公平地禁止提问。也许您可以使用我的评论内容打开一个问题并发布您自己问题的答案,我会将其标记为答案并进行投票?抱歉让我感到困惑 - 我对那些禁止我而不是因为我什至没有做过的事情而暂停我的模组感到非常恼火。现在我只是想为社区做出贡献,希望能解除禁令。我在任何地方都找不到对我有用的答案。很抱歉给您带来麻烦,如果您不想提供帮助,我理解。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-17
    • 2014-08-14
    • 1970-01-01
    • 1970-01-01
    • 2012-12-04
    • 2015-12-17
    相关资源
    最近更新 更多