使用 setuptools 构建错误:RuntimeError

Building error with setuptools: RuntimeError

我一直在使用 cxFreeze 构建我的 Python 代码有一段时间了,没有任何问题,直到今天。不过,我不确定问题是否出自 cxFreeze。虽然网上有一些RuntimeError异常,但是和我得到的不完全一致

$ python2.7 setup.py build
running build
running build_exe
Traceback (most recent call last):
  File "setup.py", line 79, in <module>
    executables = [client, updater, dbg_updater]
  File "C:\python27\lib\site-packages\cx_Freeze\dist.py", line 362, in setup
    distutils.core.setup(**attrs)
  File "C:\python27\lib\distutils\core.py", line 151, in setup
    dist.run_commands()
  File "C:\python27\lib\distutils\dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "C:\python27\lib\distutils\dist.py", line 972, in run_command
    cmd_obj.run()
  File "C:\python27\lib\distutils\command\build.py", line 127, in run
    self.run_command(cmd_name)
  File "C:\python27\lib\distutils\cmd.py", line 326, in run_command
    self.distribution.run_command(command)
  File "C:\python27\lib\distutils\dist.py", line 972, in run_command
    cmd_obj.run()
  File "C:\python27\lib\site-packages\cx_Freeze\dist.py", line 232, in run
    freezer.Freeze()
  File "C:\python27\lib\site-packages\cx_Freeze\freezer.py", line 619, in Freeze
    self.finder = self._GetModuleFinder()
  File "C:\python27\lib\site-packages\cx_Freeze\freezer.py", line 378, in _GetModuleFinder
    finder.IncludePackage(name)
  File "C:\python27\lib\site-packages\cx_Freeze\finder.py", line 686, in IncludePackage
    module = self._ImportModule(name, deferredImports)
  File "C:\python27\lib\site-packages\cx_Freeze\finder.py", line 346, in _ImportModule
    deferredImports, namespace = namespace)
  File "C:\python27\lib\site-packages\cx_Freeze\finder.py", line 419, in _InternalImportModule
    namespace = namespace)
  File "C:\python27\lib\site-packages\cx_Freeze\finder.py", line 436, in _InternalImportModule
    parentModule, namespace)
  File "C:\python27\lib\site-packages\cx_Freeze\finder.py", line 448, in _LoadModule
    namespace)
  File "C:\python27\lib\site-packages\cx_Freeze\finder.py", line 513, in _LoadPackage
    self._LoadModule(name, fp, path, info, deferredImports, parent)
  File "C:\python27\lib\site-packages\cx_Freeze\finder.py", line 502, in _LoadModule
    self._ScanCode(module.code, module, deferredImports)
  File "C:\python27\lib\site-packages\cx_Freeze\finder.py", line 601, in _ScanCode
    module, relativeImportIndex)
......................................
  File "C:\python27\lib\site-packages\cx_Freeze\finder.py", line 356, in _ImportModule
    deferredImports, namespace = namespace)
  File "C:\python27\lib\site-packages\cx_Freeze\finder.py", line 436, in _InternalImportModule
    parentModule, namespace)
  File "C:\python27\lib\site-packages\cx_Freeze\finder.py", line 502, in _LoadModule
    self._ScanCode(module.code, module, deferredImports)
  File "C:\python27\lib\site-packages\cx_Freeze\finder.py", line 601, in _ScanCode
    module, relativeImportIndex)
  File "C:\python27\lib\site-packages\cx_Freeze\finder.py", line 356, in _ImportModule
    deferredImports, namespace = namespace)
  File "C:\python27\lib\site-packages\cx_Freeze\finder.py", line 436, in _InternalImportModule
    parentModule, namespace)
  File "C:\python27\lib\site-packages\cx_Freeze\finder.py", line 449, in _LoadModule
    module = self._AddModule(name)
  File "C:\python27\lib\site-packages\cx_Freeze\finder.py", line 213, in _AddModule
    module = self._modules[name] = Module(name)
RuntimeError: maximum recursion depth exceeded while calling a Python object

不知道是什么导致了错误。我没有添加任何新模块,只是修复了程序中的一些错误。我有最新版本的 pip 和 setuptools。有谁知道这个错误是什么意思?

如果您想查看代码,请在此处:https://github.com/vlegoff/cocomud/blob/master/src/setup.py

提前致谢!

编辑: 原来所有的大惊小怪都是因为解析模块(pypi.python.org/pypi/parse),尽管它没有包含在我试图冻结的项目中。我用 pip uninstall 删除了它,当我试图冻结我的项目时它起作用了。不知道为什么,我这样做是因为我记得安装了两个新软件包来试用它们。

这看起来很奇怪。我相信它可能与 cx_freeze 中的错误有关。 如果您阅读此 link 推荐的人: https://bitbucket.org/anthony_tuininga/cx_freeze/issues/184/importing-pyqtgraph-causes-recursion-limit

他们似乎对您在项目中使用的 pyqtgraph 和 urllib 有问题(而且该错误似乎尚未修复)。所以我建议 从你的项目中排除这个 并检查它是否更好。也许,您也可以 尝试 cx_freeze 的另一个版本 ,或者以其他方式指定导入的库,例如,通过 linking 模块手动 使用此语法:

Buildoptions=dict(
    compressed=True,
    includes=["moduletoinclude"],
    path=sys.path + ["Lib"]
)

祝你有愉快的一天

原来所有的大惊小怪都是因为解析模块(pypi.python.org/pypi/parse),尽管它没有包含在我试图冻结的项目中。我用 pip uninstall 删除了它,当我试图冻结我的项目时它起作用了。不知道为什么,我这样做是因为我记得安装了两个新软件包来试用它们。