上次分享了一键打包Python程序为exe的方法后,很多小伙伴后台咨询问:这种简单的程序只需要一行命令就能搞定,但企业里那些带有配置文件、数据库的复杂项目该怎么办?
这不,小编带着企业级的复杂项目来手把手教你啦~😎
先来看看我们这个“麻雀虽小,五脏俱全”的实战项目:怎么样?够复杂了吧😂

以下是项目文件结构:
hello/
├── common/
│ └── common.py # 数据库操作相关函数
├── media/
│ └── img/
│ └── tubiao.ico # 程序图标
├── main.py # 主程序文件
├── config.ini # 程序配置文件
├── 配置文件.txt # 数据配置文件,用于自动读取显示内容
├── database.db # SQLite数据库
└── README.md # 项目说明文档
这个demo代码虽然简单,但包含了企业项目中最常见的元素:配置文件、数据库、资源文件和模块化代码,是绝佳的打包练习素材!
后台回复“打包”获取完整源码,文章最后提供一键打包方法噢~
运行以下命令,创建requirements.txt
pip freeze > requirements.txt

安装所有项目依赖:
pip install -r requirements.txt

PyInstaller是Python项目打包成exe的一个第三方模块
pip install pyinstaller

使用以下命令,生成spec文件(一种PyInstaller配置打包详细参数的文件)
pyinstaller --name hello_world --onefile main.py
参数说明:
--onefile:生成单个可执行程序--name hello_world:设置EXE程序名为hello_worldmain.py:入口执行文件
打开生成的hello_world.spec文件,需要修改以下几个配置:
a = Analysis(
['main.py'], # 主程序入口文件
pathex=[os.path.abspath('.')], # 搜索路径:当前目录的绝对路径
datas=[ # 需要打包的额外数据文件
('配置文件.txt', '.'), # 源文件 → 打包后的目标路径
('config.ini', '.'),
('database.db', '.')
],
hiddenimports=['common.common'], # 隐藏导入(PyInstaller无法自动检测的模块)
)
exe = EXE(
name='hello_world', # 生成的可执行文件名称
console=False, # 是否为控制台程序(False不显示黑色终端)
icon=[r'media\img\tubiao.ico'] # 程序图标文件路径
)
完整hello_world.spec文件:
# -*- mode: python ; coding: utf-8 -*-
import os
a = Analysis(
['main.py'], # 主程序入口文件
pathex=[os.path.abspath('.')], # 搜索路径:当前目录的绝对路径
binaries=[], # 需要包含的二进制文件(DLL、共享库等)
datas=[ # 需要打包的额外数据文件
('配置文件.txt', '.'), # 源文件 → 打包后的目标路径
('config.ini', '.'),
('database.db', '.')
],
hiddenimports=['common.common'], # 隐藏导入(PyInstaller无法自动检测的模块)
hookspath=[], # 自定义hook文件路径
hooksconfig={}, # hook配置字典
runtime_hooks=[], # 运行时hook脚本
excludes=[], # 要排除的模块
noarchive=False, # 是否不创建归档文件
optimize=0, # 优化级别:0=不优化,1=移除assert,2=移除docstrings
)
pyz = PYZ(a.pure) # 创建包含所有纯Python模块的ZIP归档
exe = EXE(
pyz, # 从PYZ归档获取数据
a.scripts, # 主脚本和依赖脚本
a.binaries, # 二进制文件
a.datas, # 数据文件
[], # 兼容性参数(已弃用)
name='hello_world', # 生成的可执行文件名称
debug=False, # 是否包含调试信息
bootloader_ignore_signals=False, # bootloader是否忽略信号
strip=False, # 是否去除符号信息
upx=True, # 是否使用UPX压缩可执行文件
upx_exclude=[], # UPX压缩排除列表
runtime_tmpdir=None, # 运行时临时目录
console=False, # 是否为控制台程序(False不显示黑色终端)
disable_windowed_traceback=False, # 是否禁用窗口程序的错误回溯
argv_emulation=False, # 是否启用参数模拟(主要用于macOS)
target_arch=None, # 目标架构
codesign_identity=None, # 代码签名标识(macOS)
entitlements_file=None, # 权限文件(macOS)
icon=[r'media\img\tubiao.ico'] # 程序图标文件路径
)
执行打包命令,也就是我们刚刚修改好的hello_world.spec文件
pyinstaller hello_world.spec

手动复制必要文件!
这是很关键的一步!必须手动将程序运行所需的配置文件手动复制到dist目录下
├── config.ini # 程序配置文件
├── 配置文件.txt # 数据配置文件,用于自动读取显示内容
├── database.db # SQLite数据库

双击dist目录下的hello_world.exe即可运行

我们只需要一句话告诉AI:帮我打包这个项目为exe程序

AI可以自己进行以上的所有操作,甚至帮你编写完整的spec文件配置,AI真成精了🤫

当然,但作为开发人员,我们要明白:AI只是工具,真正重要的是理解打包的原理和流程。只有这样,当遇到问题时,我们才能快速定位并解决
你的点赞,是我的最大动力~