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