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

Anaconda环境下无法用PyInstaller打包Kivy项目成.exe文件

解决Kivy+Anaconda环境下PyInstaller打包失败/运行报错问题

我之前帮不少开发者解决过Kivy+PyInstaller+Anaconda的打包问题,你的情况其实挺典型的——Anaconda环境的依赖冗余加上Kivy本身的打包特殊性,很容易踩坑。咱们一步步来解决:

第一步:创建干净的虚拟环境,避免Anaconda依赖冲突

Anaconda默认环境里装了太多无关包,很容易和Kivy、PyInstaller的依赖冲突。建议你创建一个仅包含必要依赖的conda虚拟环境:

  • 创建新环境(选Kivy官方支持的Python版本,比如3.9,太新的版本可能兼容性差):
    conda create -n kivy-pack-env python=3.9
    
  • 激活环境:
    conda activate kivy-pack-env
    
  • 用pip安装Kivy和PyInstaller(别用conda装Kivy,conda包经常有打包相关的bug):
    pip install kivy pyinstaller
    

第二步:配置正确的PyInstaller打包参数(针对Kivy)

Kivy需要PyInstaller加载特定的hook文件和依赖库,直接用默认命令打包肯定会出问题:

  1. 先确保你的主脚本有标准的Kivy入口(比如main.py):
    from kivy.app import App
    from kivy.uix.label import Label
    
    class MyKivyApp(App):
        def build(self):
            return Label(text="Hello from Kivy!")
    
    if __name__ == "__main__":
        MyKivyApp().run()
    
  2. 基础打包命令(适合简单项目):
    pyinstaller --windowed --onefile --name MyApp main.py
    
    • --windowed:隐藏控制台窗口(GUI程序必加)
    • --onefile:生成单个exe文件
  3. 如果你的项目有kv文件、图片等资源,需要用--add-data参数指定打包路径(Windows用分号分隔,Linux/macOS用冒号):
    pyinstaller --windowed --onefile --add-data "myapp.kv;." --add-data "assets/logo.png;assets" main.py
    
  4. 若仍报错,手动修改spec文件:
    • 先生成spec文件:pyinstaller main.py
    • 打开生成的main.spec,在Analysis部分添加Kivy的必要隐藏依赖:
      a = Analysis(
          ['main.py'],
          pathex=[],
          binaries=[],
          datas=[],
          hiddenimports=['kivy.deps.glew', 'kivy.deps.sdl2', 'kivy.deps.gstreamer'],
          hookspath=[],
          hooksconfig={},
          runtime_hooks=[],
          excludes=[],
          win_no_prefer_redirects=False,
          win_private_assemblies=False,
          cipher=block_cipher,
          noarchive=False,
      )
      
    • 再用spec文件打包:pyinstaller main.spec

第三步:解决“无可用窗口”运行报错

这个错误本质是Kivy找不到窗口渲染依赖(SDL2、GLEW),常见解决办法:

  • 确保你用pip安装的Kivy(conda版Kivy的SDL2依赖经常缺失)
  • 手动复制Kivy依赖的dll文件到exe目录:
    找到你的虚拟环境下的Lib\site-packages\kivy\deps\sdl2和glew文件夹,把里面的SDL2.dll、glew32.dll等dll文件复制到exe所在的dist文件夹里
  • 运行exe时,不要把exe单独移到其他目录,要保留dist文件夹里的所有文件(如果用--onefile则不需要,但偶尔还是会有依赖缺失)

第四步:排查打包失败的问题(连打包命令都无法执行)

如果现在连PyInstaller都无法启动打包,先做这些排查:

  • 检查PyInstaller版本:建议用稳定版,比如pip install pyinstaller==5.13.2(最新版可能和Kivy有兼容性问题)
  • 检查依赖冲突:运行pip check看有没有报错的依赖,修复后再尝试打包
  • 直接在命令行执行打包命令(别用PyCharm的终端,避免环境变量问题),看具体的错误提示——比如是不是某个模块无法被PyInstaller识别,或者权限不足

按照这个流程走,大部分Kivy+Anaconda的打包问题都能解决。如果还有具体的报错信息,可以再针对性分析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:10:44