kivy打包成exe

cooolr 于 2021-12-02 发布
  1. 安装venv虚拟环境: python -m venv env
  2. 切换venv虚拟环境: cd env/Scripts/&&activate.bat
  3. 安装kivy和pyinstaller: python -m install kivy kivymd pyinstaller
  4. 编写main.spec

如果pyinstaller不能自动打包依赖库,需手动把库文件夹拉到项目目录下,文件夹名称加到hiddenimports里面

# -*- mode: python ; coding: utf-8 -*-

import os
import sys
from kivy_deps import sdl2, glew
from kivymd import hooks_path as kivymd_hooks_path

block_cipher = None

path = os.path.abspath(".")

a = Analysis(["main.py"],
             pathex=[path],
             binaries=None,
             datas=None,
             hiddenimports=[],
             hookspath=[kivymd_hooks_path],
             runtime_hooks=[],
             excludes=['_tkinter', 'Tkinter', 'enchant', 'twisted'],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher)

a.datas += [('main.kv', f'{path}\main.kv', '')]

pyz = PYZ(a.pure, a.zipped_data,
         cipher=block_cipher)

exe = EXE(pyz, Tree(f'{path}/data', 'data'),
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          *[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)],
          name='myapp',
          debug=False,
          strip=False,
          upx=True,
          console=False)
  1. 检查目录结构:
gui
├─env
├─data
  └─droid.ttf
├─main.py
├─main.kv
└─main.spec
  1. 打包成exe
python -m PyInstaller main.spec

enjoy~