我正在尝试使用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/

10-13 05:20