Cx_Freeze找不到pkg_resources /*.*'

时间:2017-03-05 13:42:02

标签: python setuptools cx-freeze

我正在尝试使用cx_Freeze setup.py文件使用以下命令构建EXE:

python setup.py bdist_msi

命令的输出结束于:

  

从包pkg_resources复制数据...错误:[错误3]系统   找不到指定的路径:'C:\ Program   文件\ Anaconda2 \ LIB \站点包\ setuptools的-27.2.0-py2.7.egg \ pkg_resources才能/*.*'

我不知道该怎么做。我已经检查过了setuptools的蛋,并且里面有一个pgk_resources库,我不知道该怎么做。

我正在使用conda安装和python2.7。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

那是因为cx_Freeze无法使用以压缩.egg方式安装的软件包的子包。正常的Python安装使用pip,与Anaconda不同,它始终解包.egg

相应的问题: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的解压缩版本只是一个临时解决方案 - 直到您获得另一个.egg

答案 1 :(得分:0)

我通过

解决了这个问题
pip install --upgrade setuptools
pip install --upgrade distribute

我从Ali Akdurak那里得到答案No module named pkg_resources