[英]py2exe: error: libzmq.pyd: No such file or directory
在py2exe构建期间,我收到以下错误:
creating python loader for extension 'win32clipboard' (C:\Python27\lib\site-packages\win32\win32clipboard.pyd -> win32clipboard.pyd)
creating python loader for extension '_rl_accel' (C:\Python27\lib\site-packages\_rl_accel.pyd -> _rl_accel.pyd)
*** finding dlls needed ***
error: libzmq.pyd: No such file or directory
任何人都可以解释我是否真的需要它,在哪里找到它或如何排除它。
谢谢Mads
要使其工作,需要三个步骤:
dll_excludes
选项从dll中排除libzmq.pyd
。 这避免了“缺少pyzmq.pyd”错误。 excludes
模块中排除zmq.libzmq
(同样的事情)。 这会跳过通常的.pyd renamind和代理py2exe。 includes
选项显式添加zmq.backend.cython
,因为py2exe无法通过pyzmq后端选择代码看到它。 如果你没有这样做,你将得到“没有名为cffi的模块”错误。 例:
import zmq.libzmq
setup(
# ...
zipfile='lib/library.zip',
options={
'py2exe': {
'includes': ['zmq.backend.cython'],
'excludes': ['zmq.libzmq'],
'dll_excludes': ['libzmq.pyd'],
}
},
data_files=[
('lib', (zmq.libzmq.__file__,))
]
)
不幸的是,这不是一个好的答案,但我认为这是一个不错的诊断。
py2exe维基不是最新的(至少我认为)。 我相信版本13.0.0进行了更改,其中libzmq.pyd替换了libzmq.dll。 Py2exe对扩展模块的正常处理将其重命名为“zmq.libzmq.pyd”,但是由于(例如)zmq.core._device.pyd显式链接到libzmq.pyd,因此打破了windows dll的发现。
这激发了另一个丑陋的修复方法,即将zmq.libzmq.pyd复制到py2exe生成的dist文件夹中的libzmq.pyd。 使用此修复程序,我的py2exe输出exe正确运行导出错误。
我不确定这是一个最佳解决方案,但它对我有用:
MADS
一个更简单的解决方案,如上所述,一个解决方案需要编译libzmq - 但是我很蠢。
在您的设置中包含以下内容和data_files。 而已
设置程序(#...选项= { 'py2exe':{ '包括':[ 'zmq.backend.cython']}},data_files = [( 'LIB',(zmq.libzmq 文件 ,))])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.