【问题标题】:Building error with setuptools: RuntimeError使用 setuptools 构建错误:RuntimeError
【发布时间】:2017-05-28 19:32:48
【问题描述】:

我一直在使用 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 删除了它,当我尝试冻结我的项目时它起作用了。不知道为什么,我这样做是因为我记得安装了两个新软件包来试用它们。

【问题讨论】:

    标签: python pip setuptools cx-freeze


    【解决方案1】:

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

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

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

    祝你有美好的一天

    【讨论】:

    • 感谢您的回答。事实证明,所有的大惊小怪都是因为解析模块(pypi.python.org/pypi/parse),尽管它不包含在我试图冻结的项目中。我用 pip uninstall 删除了它,当我尝试冻结我的项目时它起作用了。不知道为什么,我这样做是因为我记得安装了两个新软件包来试用它们。我可以将其标记为已关闭...但我不反对解释为什么 parse 会导致这样的问题。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-03-18
      • 2020-09-15
      • 1970-01-01
      • 2016-10-29
      • 1970-01-01
      • 2017-02-12
      • 2011-01-13
      • 2019-12-13
      • 2019-04-27
      相关资源
      最近更新 更多