基于指定wxPython版本构建Python发行包问题求助
解决py2exe打包时误选wxPython 3.0而非指定2.8版本的问题
我之前也碰到过类似的多版本wxPython打包冲突问题,给你几个实用的解决方案,按优先级推荐:
1. 用虚拟环境彻底隔离版本(最稳妥)
本地同时装两个wxPython版本很容易让打包工具混淆,用虚拟环境单独搭建wx2.8的环境是最省心的办法:
- 先安装virtualenv:
pip install virtualenv - 创建专属虚拟环境:
virtualenv wx28_env - 激活环境:
- Windows:
wx28_env\Scripts\activate - Linux/macOS:
source wx28_env/bin/activate
- Windows:
- 在激活的环境里安装指定版本的依赖:
pip install wxpython==2.8.12.1 py2exe - 最后在这个干净的环境里运行你的
setup.py打包,绝对不会再误选3.0版本
2. 在代码中强制指定wxPython版本
如果不想折腾虚拟环境,可以在主脚本和setup.py里强制锁定2.8版本:
- 在你的主脚本
GrabadorTarjetaMifareSiteco.py最开头添加:import wxversion wxversion.select('2.8-msw-unicode') import wx - 同时在
setup.py开头也加入这段代码,确保打包工具加载的是正确版本的wx库
3. 修改setup.py的py2exe配置,明确指定依赖
在setup的options参数里,手动指定要包含的wx模块,排除3.0版本的内容:
from distutils.core import setup import py2exe import sys # 可选:把wx2.8的路径加到sys.path最前面,确保优先加载 sys.path.insert(0, 'C:\\你的Python路径\\Lib\\site-packages\\wx-2.8-msw-unicode') setup( name='Grabador tarjetas', version='0.0', description='Grabador Mifare', author='siteco.desarrollo', author_email='siteco.desarrollo@gmail.com', url='http://www.sitecosl.net', scripts=["GrabadorTarjetaMifareSiteco.py"], windows=["GrabadorTarjetaMifareSiteco.py"], data_files=[('', ['config.cfg'])], options={ 'py2exe': { 'includes': ['wx'], 'excludes': ['wx._wx30', 'wx-3.0-msw'], 'packages': ['wx'] } } )
4. 检查当前Python环境的wx版本
先确认命令行环境里加载的是不是2.8版本:
在命令行运行:python -c "import wx; print(wx.__version__)"
如果输出的是3.0,说明你的命令行环境没有正确识别wx.pth的配置,这时候可以临时修改sys.path,或者优先使用虚拟环境。
内容的提问来源于stack exchange,提问作者user2413439
相关产品推荐
相关产品推荐

