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

如何将使用Kivy与Tensorflow的Python脚本打包为.exe文件?

解决Kivy + TensorFlow Python脚本打包为.exe的完整方案

我之前也踩过Kivy+TensorFlow打包的各种坑,折腾了PyInstaller和cx_Freeze才找到靠谱的配置方法,下面这套流程亲测能顺利打包你提到的图像识别Kivy应用:

一、优先推荐:PyInstaller 正确配置方案

PyInstaller其实是打包这类应用最稳定的工具之一,你之前遇到的pywrap_tensorflow导入错误,本质是PyInstaller没自动收集全TensorFlow的深层依赖,不是单纯加路径就能解决的。按以下步骤操作:

  1. 生成PyInstaller配置文件
    先别直接打包,先生成可编辑的spec文件:

    pyi-makespec --onefile main.py
    

    这会在当前目录生成main.spec,我们要修改这个文件补全依赖配置。

  2. 修改spec文件的核心配置
    打开main.spec,找到Analysis部分,替换成以下内容:

    a = Analysis(
        ['main.py'],
        pathex=['venv\\Lib\\site-packages', 'venv\\Lib\\site-packages\\tensorflow_core'],
        binaries=[],
        datas=[
            ('venv\\Lib\\site-packages\\kivy\\data', 'kivy\\data'),
            ('venv\\Lib\\site-packages\\kivy\\fonts', 'kivy\\fonts'),
            ('venv\\Lib\\site-packages\\kivy\\images', 'kivy\\images')
        ],
        hiddenimports=['tensorflow_core', 'tensorflow_core.python', 'tensorflow_core._api.v2', 'kivy.weakmethod', 'kivy.uix.behaviors'],
        hookspath=[],
        hooksconfig={},
        runtime_hooks=[],
        excludes=['tensorflow.python.tests', 'tensorflow.tools', 'tensorflow.examples'],
        win_no_prefer_redirects=False,
        win_private_assemblies=False,
        cipher=None,
        noarchive=False,
    )
    

    重点说明:

    • hiddenimports:手动补上PyInstaller自动漏掉的模块,包括TensorFlow的核心子模块和Kivy的weakmethod(就是你用cx_Freeze时遇到的缺失模块)
    • pathex:明确指向虚拟环境的依赖目录,确保TensorFlow的所有底层文件都能被扫描到
    • datas:打包Kivy的资源文件(字体、图片、数据),否则运行exe时会报资源缺失
    • excludes:排除TensorFlow的测试、工具、示例模块,既减少打包体积,又避免不必要的依赖冲突
  3. 用修改后的spec文件打包
    执行命令:

    pyinstaller main.spec
    

    打包完成后,dist文件夹里的main.exe就是可以直接运行的程序。

二、cx_Freeze 修正方案(备选)

如果你更习惯用cx_Freeze,只需要修改setup.py来补全Kivy和TensorFlow的依赖:

  1. 修正后的setup.py代码

    import sys
    from cx_Freeze import setup, Executable
    
    # 手动指定需要包含的模块,补上Kivy和TensorFlow的缺失依赖
    includes = ['kivy.weakmethod', 'kivy.uix.behaviors', 'tensorflow_core', 'tensorflow_core.python']
    # 排除TensorFlow的冗余模块,缩小包体积
    excludes = ['tensorflow.python.tests', 'tensorflow.tools']
    # 添加Kivy的资源文件,否则运行时会找不到字体、图片
    include_files = [
        ('venv\\Lib\\site-packages\\kivy\\data', 'kivy\\data'),
        ('venv\\Lib\\site-packages\\kivy\\fonts', 'kivy\\fonts'),
        ('venv\\Lib\\site-packages\\kivy\\images', 'kivy\\images')
    ]
    
    # Windows下指定GUI模式,避免运行exe时弹出控制台窗口
    base = None
    if sys.platform == 'win32':
        base = 'Win32GUI'
    
    executables = [Executable("main.py", base=base)]
    
    setup(
        name="main",
        version="0.1",
        description="TensorFlow Image Recognition Kivy App",
        includes=includes,
        excludes=excludes,
        include_files=include_files,
        executables=executables
    )
    
  2. 执行打包命令

    python setup.py build
    

    打包完成后,build目录下的子文件夹里会有可执行文件和对应的依赖库。

三、通用避坑指南

  • 用干净的虚拟环境:一定要在独立的虚拟环境中安装Kivy和TensorFlow,避免全局环境的依赖版本冲突,导致打包失败
  • 版本匹配很重要:建议使用Kivy 2.x和TensorFlow 2.x的稳定版本,比如Kivy 2.1.0 + TensorFlow 2.10.0,太新的版本可能存在打包工具兼容问题
  • 先跑通脚本再打包:打包前务必确保main.py在虚拟环境中能正常运行,排除代码本身的错误,再进行打包操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:16:10