在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
答案 0 :(得分:10)
使其运作需要三个步骤:
libzmq.pyd
选项从dll中排除dll_excludes
。这可以避免“缺少pyzmq.pyd”错误。zmq.libzmq
的模块中排除excludes
(同样的事情)。这会跳过通常的.pyd renamind和代理py2exe。zmq.backend.cython
选项显式添加includes
,因为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__,))
]
)
答案 1 :(得分:3)
不幸的是,这不是一个很好的答案,但我认为这是一个不错的诊断。
py2exe wiki不是最新的(至少我认为)。我相信版本13.0.0进行了更改,其中libzmq.pyd替换了libzmq.dll。 Py2exe对扩展模块的正常处理将其重命名为" zmq.libzmq.pyd",但是由于(例如)zmq.core._device.pyd显式链接到libzmq,因此打破了windows dll的发现。 PYD。
这激发了另一个丑陋的修复方法,即将zmq.libzmq.pyd复制到py2exe生成的dist文件夹中的libzmq.pyd。使用此修复程序,我的py2exe输出exe正确运行导出错误。
答案 2 :(得分:1)
我不确定这是一个最佳解决方案,但它对我有用:
的Mads
答案 3 :(得分:0)
一个更简单的解决方案,如上所述,一个解决方案需要编译libzmq - 但是我很傻。
在您的设置中包含以下include和data_files。 那是
设置( #... 选项= { ' py2exe':{ '包括':[' zmq.backend.cython'] } }, data_files = [ (' lib',(zmq.libzmq。 file ,)) ] )