You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Py2exe打包Python眼控鼠标程序时遇WinError 87错误求助

解决Py2exe打包含zmq的眼控鼠标程序时出现WinError 87的问题
  • 更新依赖版本
    先卸载旧版本的pyzmq和py2exe,重新安装最新稳定版,避免版本兼容问题:

    pip uninstall pyzmq py2exe -y
    pip install pyzmq py2exe
    

    确保安装的是对应Python版本的预编译pyzmq包(不要手动编译源码)。

  • 修改setup.py配置,手动引入zmq依赖文件
    Py2exe可能无法自动识别zmq的二进制依赖,需要在setup配置里手动指定data_files,将zmq的核心dll文件包含进去。示例配置如下:

    from distutils.core import setup
    import py2exe
    import zmq
    import os
    
    # 获取zmq库所在路径及核心dll文件
    zmq_lib_path = os.path.dirname(zmq.__file__)
    required_dlls = [os.path.join(zmq_lib_path, 'libzmq.dll')]
    
    setup(
        # 若为GUI程序,将console改为windows=['main.py']
        console=['main.py'],
        # 将zmq的dll文件添加到打包资源中
        data_files=[('', required_dlls)],
        options={
            'py2exe': {
                # 显式声明需要包含的zmq模块
                'includes': ['zmq'],
                # 先禁用单文件打包,避免参数错误
                'bundle_files': 3,
                'compressed': True
            }
        }
    )
    
  • 避免单文件打包模式
    WinError 87经常在尝试bundle_files=1(单文件打包)时触发,先使用bundle_files=3生成多文件的dist目录,确认打包成功后,再尝试单文件打包(若需单文件,可能需要额外处理依赖路径)。

  • 检查位数匹配
    确保Python的位数(32位/64位)与安装的pyzmq包位数完全一致,混合位数会导致二进制文件加载参数错误。

  • 清理缓存后重新打包
    删除之前生成的build和dist文件夹,再重新执行打包命令:

    python setup.py py2exe
    

内容的提问来源于stack exchange,提问作者Chiara Mancarella

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 19:30:39