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

Mad*_*sen 5 python py2exe pyzmq

在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
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释我是否真的需要它,在哪里找到它或如何排除它.

谢谢Mads

Nik*_*kin 10

要使其工作,需要三个步骤:

  • libzmq.pyd从带有dll_excludes选项的dll中排除.这避免了"缺少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__,))
    ]
)
Run Code Online (Sandbox Code Playgroud)


Mad*_*sen 1

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

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

麦兹