繁体   English   中英

py2exe:错误:libzmq.pyd:没有这样的文件或目录

[英]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正确运行导出错误。

我不确定这是一个最佳解决方案,但它对我有用:

  • http://pypi.python.org/pypi/pyzmq下载pyzmq
  • 使用easy_install安装鸡蛋
  • 将libzmq.dll从C:\\ Python27 \\ Lib \\ site-packages \\ pyzmq-2.2.0.1-py2.7-win32.egg \\ zmq复制到C:\\ Python27 \\ dlls \\

MADS

一个更简单的解决方案,如上所述,一个解决方案需要编译libzmq - 但是我很蠢。

  1. 将libzmq.pyd从C:\\ python27 \\ Lib \\ sites-packages \\ zmq复制到c:\\ python27 \\ DLLs import zmq.libzmq
  2. 在您的设置中包含以下内容和data_files。 而已

    设置程序(#...选项= { 'py2exe':{ '包括':[ 'zmq.backend.cython']}},data_files = [( 'LIB',(zmq.libzmq 文件 ,))])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM