假设我们的项目具有以下结构。
MyApp
|-models
| |-login.kv
|-data
| |-words.json
| |-audio.tar.gz
|-fonts
| |-FredokaOne.ttf
|-images
| |-gb.pngsound.png
| |-icon.ico
|-main.py
|-main.kv
|-draw.py
|-image.py
并且依赖于以下包:
- kivy
- kivymd
- ffpyplayer
- gtts
- 首先要安装
cx_Freeze。
pip install cx_Freeze
- 将以下内容复制到与您的项目位于同一文件夹中的名为
setup.py 的文件中。
# https://cx-freeze.readthedocs.io/en/latest/distutils.html
import sys
from cx_Freeze import setup, Executable
includes = []
# Include your files and folders
includefiles = ['models/','data/','fonts/','images/','main.kv','draw.py','image.py']
# Exclude unnecessary packages
excludes = ['cx_Freeze','pydoc_data','setuptools','distutils','tkinter']
# Dependencies are automatically detected, but some modules need help.
packages = ['kivy','kivymd', 'ffpyplayer','gtts']
base = None
shortcutName = None
shortcutDir = None
if sys.platform == "win32":
base = "Win32GUI"
shortcutName='My App'
shortcutDir="DesktopFolder"
setup(
name = 'MyApp',
version = '0.1',
description = 'Sample python app',
author = 'your name',
author_email = '',
options = {'build_exe': {
'includes': includes,
'excludes': excludes,
'packages': packages,
'include_files': includefiles}
},
executables = [Executable('main.py',
base = base, # "Console", base, # None
icon='images/icon.ico',
shortcutName = shortcutName,
shortcutDir = shortcutDir)]
)
- 最后运行。
python setup.py build
此命令将创建一个名为build 的子目录,其中还有一个以字母exe. 开头并以distutils 使用的平台的典型标识符结尾的子目录。这允许构建多个平台而不会发生冲突。
在 Windows 上,您可以构建一个简单的安装程序,其中包含 cx_Freeze 为您的应用程序包含的所有文件,方法是运行以下安装脚本:
python setup.py bdist_msi
Cx_freeze 参考