如果涉及包,cx_Freeze 在构建时会抛出错误

问题描述

cx_Freeze 成功将 .py 文件转换.exe(如果不涉及其他包)。

但是当包含 pandas 时,安装失败并显示以下消息:

File "C:\Anaconda\lib\site-packages\cx_Freeze\hooks.py",line 1324,in load_zmq
    libzmq = __import__("zmq",fromlist=["libzmq"]).libzmq
AttributeError: module 'zmq' has no attribute 'libzmq'

这是setup.py内容

import sys
from cx_Freeze import setup,Executable

build_exe_options = {"packages": ["pandas"]}

base = None
if sys.platform == "win32":
    base = "win32gui"

setup(  name = "test",version = "0.1",options = {"build_exe": build_exe_options},executables = [Executable("test.py",base=base)])

到目前为止,我已经尝试在 anaconda 中创建一个不同的环境来运行 cx_freeze 以查看问题是否以这种方式自行解决

感谢任何帮助。

解决方法

我花了很长时间试图找到这个问题的答案,但幸运的是它可以找到here。这似乎是 cx_freeze 固有的错误。

虽然提供的下载轮子的链接不再有效,但补丁已添加到最新的开发版本(如果我没记错的话,是 6.6.0)。可以直接从github安装,如下:

python -m pip install git+https://github.com/marcelotduarte/cx_Freeze.git

这样做为我修复了错误(并使我能够发现我必须处理的其他错误!)。