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

PyCharm打包Python为.exe时出现ImportError: cannot import name _remove_dead_weakref

解决py2exe打包时出现ImportError: cannot import name _remove_dead_weakref的问题

我之前也碰到过完全一样的报错!这个问题几乎都是因为py2exe版本与Python版本不兼容导致的,尤其是在使用Python 2.7系列版本时更容易出现。先把你遇到的错误贴出来方便大家对照:

Traceback (most recent call last):
File "E2Tools.py", line 17, in
File "E2Tools.py", line 17, in
File "zipextimporter.pyc", line 82, in load_module
File "zipextimporter.pyc", line 82, in load_module
File "logging_init_.pyc", line 26, in
File "zipextimporter.pyc", line 82, in load_module
File "weakref.pyc", line 14, in
ImportError: cannot import name _remove_dead_weakref

下面是几个经过验证的解决方法,按顺序尝试:

  • 安装兼容版本的py2exe
    如果你用的是Python 2.7,不要安装最新版的py2exe,而是安装专门适配Python2.7的稳定版本:

    pip uninstall py2exe
    pip install py2exe==0.6.9
    

    这个版本是目前已知对Python2.7支持最完善的,能避免很多内置模块的导入问题。

  • 调整setup.py的打包配置
    如果升级py2exe后还是报错,可以在你的打包配置文件setup.py中添加模块排除/包含规则,强制py2exe正确处理weakref相关模块:

    from distutils.core import setup
    import py2exe
    
    setup(
        console=['E2Tools.py'],  # 若是GUI程序则替换为windows=['E2Tools.py']
        options={
            "py2exe": {
                "excludes": ["_remove_dead_weakref"],
                "includes": ["weakref", "logging"]
            }
        }
    )
    
  • 清理打包缓存后重新构建
    有时候之前打包生成的build和dist文件夹里的缓存文件会干扰新的打包过程,先删除这两个文件夹,再重新运行打包命令:

    # Linux/macOS
    rm -rf build dist
    # Windows命令行
    rmdir /s /q build dist
    # 重新打包
    python setup.py py2exe
    
  • 确认Python版本一致性
    确保你在PyCharm中使用的Python解释器是Python2.7(这个错误基本只出现在Python2.7+py2exe的场景),不要不小心切换到Python3环境,否则会出现各种奇怪的导入错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:13:57