-->

py2app错误:在find_needed_modules类型错误:“NoneType”对象没有属性

2019-08-31 16:46发布

我有一些麻烦与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__'

谢谢你的帮助。

Answer 1:

问题是,一些不良的输入已经被传递给试图检测,以便将它们打包到你的应用程序依赖关系的算法 - 我在那里遇到了麻烦,这个已经在包README使用GitHub风格降价的地方之一。 MD文件。

这是一个普遍的指导调试setup.py问题,或者实际上蟒蛇问题一般。

  1. 在交互模式,即再次运行python -i setup.py py2app 。 一旦setup.py退出你会发现自己在Python提示。

  2. 运行from pdb import pm; pm() from pdb import pm; pm() 你现在应该在调试提示发现自己。

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

  4. 一旦你已经重复上述步骤几次,你会发现在遇到错误的位置-的情况我遇到它在哪里,我发现一个变量称为README文件lineno这给其造成的错误我的README文件的行。 如果你的问题是一个模块的进口,这可能会是不同的东西,但我的直觉是,你会发现自己遍历的packages在你的堆栈跟踪看到的说法,和当前列表项将是关键,以你的问题。



文章来源: py2app error: in find_needed_modules TypeError: 'NoneType' object has no attribute '__getitem__'