py2app 错误:在 find_needed_modules 中 TypeError:“NoneType”对象没有属性“__getitem__”

2024-01-05

我在使用 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__'

谢谢你的帮助。


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

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

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

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

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

  4. 一旦您重复上述步骤几次,您就会发现哪里遇到了错误 - 在我遇到的情况下,它是一个自述文件,我发现了一个名为 的变量lineno这给出了我的自述文件中导致错误的行。如果你的问题是模块导入,它可能会有所不同,但我的直觉是你会发现自己在循环packages在堆栈跟踪中看到的参数,当前列表项将是问题的关键。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

py2app 错误:在 find_needed_modules 中 TypeError:“NoneType”对象没有属性“__getitem__” 的相关文章

随机推荐