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

基于指定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
  • 在激活的环境里安装指定版本的依赖: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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:06:22