如何将Python Kivy应用加载程序编译为Windows可执行exe文件
现存代码问题
- 路径问题:
BasicClasses.py中ICON='./icon.ico'使用相对路径,打包后exe运行时会找不到图标文件导致报错 - 代码执行顺序问题:
main.py中root = MainWindow()定义在if __name__=="__main__"外层,pyinstaller打包时导入模块就会触发初始化,容易引发运行异常 - 冗余导入问题:
setup.py中导入了大量不必要的第三方包,cython编译不需要这些导入,反而可能增加编译报错概率 - 编译脚本问题:
compile.bat中同时存在python和python3两条命令,Windows环境下通常不会同时配置两个命令别名,运行时会报错
修正后的操作步骤
第一步:编译生成BasicClasses.pyd
- 先安装基础依赖:
pip install cython kivy openpyxl pyautogui
- 替换
setup.py内容为以下精简版本:
from distutils.core import Extension, setup from Cython.Build import cythonize ext = Extension(name="BasicClasses", sources=["BasicClasses.py"]) setup(ext_modules=cythonize(ext, language_level="3"))
- 替换
compile.bat内容为:
python setup.py build_ext --inplace
- 双击运行
compile.bat,编译完成后会在当前目录生成名称格式为BasicClasses.cp3x-win_amd64.pyd的文件,将其重命名为BasicClasses.pyd,同时把用到的icon.ico放在当前目录。
第二步:修正main.py代码
将main.py末尾代码调整为:
if __name__=="__main__": import sys # 处理打包后的资源路径 if hasattr(sys, '_MEIPASS'): os.chdir(sys._MEIPASS) root = MainWindow() root.run()
第三步:使用pyinstaller打包为exe
- 安装pyinstaller:
pip install pyinstaller
- 执行打包命令:
pyinstaller -F -w --add-data "BasicClasses.pyd;." --add-data "icon.ico;." --collect-data kivy --collect-data openpyxl main.py
参数说明:-F生成单exe文件,-w隐藏控制台窗口,--add-data将pyd文件和图标打包进exe,--collect-data收集kivy和openpyxl的运行依赖资源
3. 打包完成后,可执行文件生成在dist目录下,直接双击运行即可弹出带HI按钮的窗口,正常体积在30-80MB左右。
内容的提问来源于stack exchange,提问作者Prateek Raj Gautam
相关产品推荐
相关产品推荐

