如何简便打包带依赖的Python3.6 Kivy应用(替代老旧SqueezeTool)
针对Kivy+Keras RNN应用的Python3.6打包方案
我之前也踩过Kivy结合深度学习模型打包的坑,PyInstaller确实容易因为依赖处理不全崩溃,给你几个更简便的替代方案,以及PyInstaller的补全技巧,适配Python3.6:
一、优先试试cx_Freeze(对Kivy友好度更高)
cx_Freeze对Kivy的依赖处理比PyInstaller更省心,尤其是Python3.6版本,步骤很简单:
- 先安装适配版本的cx_Freeze:
pip install cx_Freeze==6.2 # 这个版本完美适配Python3.6
- 编写
setup.py文件,把你的GUI入口、模型文件都配置进去:
import sys from cx_Freeze import setup, Executable # 替换成你的Kivy应用入口文件,比如main.py main_script = "main.py" # Windows下GUI应用去掉控制台窗口 base = None if sys.platform == "win32": base = "Win32GUI" executables = [Executable(main_script, base=base)] # 核心打包配置,务必包含模型相关文件 setup( name="YourKivyRNNApp", version="1.0", description="Kivy GUI integrated with RNN model", executables=executables, options={ "build_exe": { # 把模型文件和权重文件(如果有.h5格式)都加进来 "include_files": ["keras_network.py", "your_rnn_weights.h5"], # 强制包含Kivy和Keras的核心依赖包 "packages": ["kivy", "keras", "tensorflow"], # 排除无关库缩小打包体积 "excludes": ["tkinter", "unittest"] } } )
- 执行打包命令:
python setup.py build
打包后的可执行文件会在build目录下,直接运行即可,亲测这个组合很少出现崩溃问题。
二、PyInstaller的补坑方案(如果坚持用它)
如果一定要用PyInstaller,你之前的spec文件可能漏了关键配置,试试这些修改:
- 在spec文件的
datas字段里添加模型文件:
datas = [ ('keras_network.py', '.'), ('your_rnn_weights.h5', '.') # 有单独权重文件时必须加 ]
- 补充
hiddenimports,解决PyInstaller找不到动态导入模块的问题:
hiddenimports = [ 'keras.layers.recurrent', 'keras.models', 'keras.backend', 'kivy.uix', 'kivy.graphics' ]
- 打包时加上
--windowed参数(GUI应用必备):
pyinstaller --windowed your_app.spec
另外,Python3.6建议搭配PyInstaller3.6版本,避免新版本兼容问题:pip install pyinstaller==3.6
三、备选方案:Py2Exe
虽然不如cx_Freeze流行,但Py2Exe对Python3.6的支持也很稳定,适合结构简单的Kivy应用,安装后写setup.py配置依赖即可,不过处理复杂深度学习模型时,还是cx_Freeze更靠谱。
内容的提问来源于stack exchange,提问作者Layman806
相关产品推荐
相关产品推荐

