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

使用cx_Freeze打包Python至exe的版本兼容与配置问题咨询

cx_Freeze打包Python程序问题解答

1. 可兼容打包为exe的Python、numpy、pandas版本组合

亲测稳定的版本组合有这些:

  • Python 3.8.10 + numpy 1.21.6 + pandas 1.3.5 + cx_Freeze 6.14
  • Python 3.9.13 + numpy 1.23.5 + pandas 1.4.4 + cx_Freeze 6.15
  • Python 3.7.16 + numpy 1.19.5 + pandas 1.1.5 + cx_Freeze 6.10

注意点:

  • 别用Python 3.10+搭配numpy 1.24+或pandas 2.0+,这类新版本依赖内部结构变化大,cx_Freeze容易漏打包关键模块
  • 安装时直接用pip指定版本,比如:pip install numpy==1.21.6 pandas==1.3.5 cx_Freeze==6.14(Python版本提前装好对应版本)
  • 碰到DLL加载错误,先检查有没有安装对应版本的Visual C++ Redistributable(Python3.7-3.9对应2019版)

2. cx_Freeze中includes与packages的区别及设置方法

  • includes:用来指定单个模块名。当cx_Freeze自动扫描依赖时,一些深层嵌套的小模块(比如numpy内部的方法模块)可能没被检测到,这时候手动添加即可。示例:
    options = {
        "build_exe": {
            "includes": ["numpy.core._methods", "pandas._libs.tslibs.timedeltas"]
        }
    }
    
  • packages:用来指定整个包。如果你的程序依赖某个完整的第三方库(比如pandas、操作SAP的win32com)但没被自动检测到,就把包名填在这里,cx_Freeze会打包这个包下的所有子模块。示例:
    options = {
        "build_exe": {
            "packages": ["pandas", "win32com.client"]
        }
    }
    

设置逻辑:先尝试默认打包,要是exe运行时报找不到模块,看是单个模块缺失还是整个包缺失,对应加到includes或packages中。

3. 针对触发SAP GUI取数+生成PDF程序的excludes配置

核心原则是排除完全用不上的包和模块,既能减小exe体积,还能避免依赖冲突:

  • 排除没用的GUI库:如果程序没用到tkinter、PyQt这些,添加"tkinter", "PyQt5", "PySide2"
  • 排除测试类模块:"numpy.testing", "pandas.tests", "unittest"
  • 排除系统工具类冗余库:"setuptools", "pkg_resources", "distutils"
  • 排除未使用的数据处理库:没用到matplotlib、scipy的话,添加"matplotlib", "scipy"
  • 示例配置:
    options = {
        "build_exe": {
            "excludes": ["tkinter", "numpy.testing", "pandas.tests", "setuptools", "matplotlib"]
        }
    }
    

提醒:不要随意添加excludes,先确认程序确实用不上这些模块,否则会导致运行报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 19:52:24