Cx_Freeze 找不到 pkg_resources/*.*'

Posted

技术标签:

【中文标题】Cx_Freeze 找不到 pkg_resources/*.*\'【英文标题】:Cx_Freeze cannot find pkg_resources/*.*'Cx_Freeze 找不到 pkg_resources/*.*' 【发布时间】:2017-07-25 08:15:27 【问题描述】:

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

python setup.py bdist_msi

命令的输出结束于:

从包 pkg_resources 复制数据...错误:[错误 3] 系统 找不到指定的路径:'C:\Program Files\Anaconda2\lib\site-packages\setuptools-27.2.0-py2.7.egg\pkg_resources/*.*'

我不知道该怎么做。我查了一下,setuptools的egg存在,里面有一个pgk_resources库,不知道怎么办。

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

任何帮助将不胜感激。

【问题讨论】:

嘿@Yiftach 问题仍然存在吗?我面临同样的问题。错误:[错误3]系统找不到指定的路径:'C:\\Anaconda2\\lib\ \site-packages\\setuptools-27.2.0-py2.7.egg\\pkg_resources/*.*' 但是,在我的情况下, site-packeges\\setuptools-27* 内没有文件夹 【参考方案1】:

这是因为cx_Freeze 不能与安装为打包.eggs 的包的子包一起使用。与 Anaconda 不同,普通的 Python 安装使用 pip,它总是解压 .eggs。

对应问题: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:

按照其他答案中的建议,将您拥有的所有 .eggs 替换为 pip install --upgrade 的解压版本只是一个临时解决方案 - 直到您获得另一个 .egg

【讨论】:

你写了“一个普通的 Python 安装使用 pip,它总是解压 .egg”我使用 Python 3.6,它不会解压 egg。它将 setuptools 安装为 zipped egg。将 egg 重命名为“.zip”并将两个目录(setuptools 和 pkg_resources)移动到 site-packages 目录后,它就可以工作了。 @guettli 见***.com/questions/27964960/…【参考方案2】:

我解决了这个问题

pip install --upgrade setuptools
pip install --upgrade distribute

我从 Ali Akdurak 的回答中了解到 No module named pkg_resources

【讨论】:

以上是关于Cx_Freeze 找不到 pkg_resources/*.*'的主要内容,如果未能解决你的问题,请参考以下文章

执行 cx_Freeze setup.py 后,cmd 中没有任何反应

cx_Freeze:找不到文件/目录 icon.gif

cx_Freeze 找不到 QtDesigner 框架

cx_freeze 错误:找不到模块 tkinter

找不到模块'cx_Freeze__init__'

cx_Freeze 应用程序找不到 tk.tcl