使用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
相关产品推荐
相关产品推荐

