我正在尝试使用cx_Freeze setup.py文件通过以下命令来构建EXE:
python setup.py bdist_msi
该命令的输出以以下结尾:
我不确定该怎么做。我检查了一下,发现setuptools的鸡蛋存在,并且在其中有一个pgk_resources库,我不确定该怎么做。
我正在使用conda安装和python2.7。
任何帮助将不胜感激。
最佳答案
这是因为cx_Freeze
不能与以打包的.egg
形式安装的软件包的子软件包一起使用。普通的Python安装使用的pip
总是解压缩.egg
,与Anaconda不同。
相应的问题:Failed to find module in subpackage in zipped egg · Issue #120 · anthony-tuininga/cx_Freeze。它通过修复程序链接到pull request:
diff --git a/cx_Freeze/finder.py b/cx_Freeze/finder.py
--- a/cx_Freeze/finder.py
+++ b/cx_Freeze/finder.py
@@ -61,6 +61,15 @@
If the module is found, this returns information in the same format
as :func:`imp.find_module`. Otherwise, it returns None.
"""
+ # FIX: retrieve_loadable_module dict uses paths with OS's separator
+ # as keys. However the path received as argument can have mixed
+ # slashes. This may cause some searches to fail when they should
+ # work. One case where this seems critical is when there are
+ # subpackages inside an egg package.
+ #
+ # See `record_loadable_module` method to see how mixed slashes
+ # happen.
+ path = os.path.normpath(path)
try:
return self.retrieve_loadable_module(path, modulename)
except KeyError:
按照另一个答案中的建议,用解压缩后的版本替换所有版本的
.egg
只是一个临时解决方案-直到获得另一个pip install --upgrade
为止。关于python - Cx_Freeze找不到pkg_resources/*.*',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42609043/