发布于2026-06-30 阅读(0)
扫一扫,手机访问
说起Python打包,PyInstaller绝对是绕不开的一个工具。它能把你的Python代码打包成一个独立的可执行文件,哪怕对方电脑上压根没装Python解释器,也能直接运行你的程序。对于给非技术用户交付软件、或者做个小工具分享出去来说,简直不要太方便。

装起来很简单,一行pip命令就能搞定:
pip install pyinstaller
打包之前,先确保项目里需要的依赖都装齐了。通常你可以用pip install -r requirements.txt一次性搞定。
把依赖装好之后,就可以正式开始打包了。这里有两种主流方式,一种是用命令行直接怼,另一种是写成脚本反复用,看个人习惯。
简单粗暴版:
pyinstaller main.py
这条命令干完,会在当前目录下生成一个dist文件夹,里面就是打包好的东西。不过可执行文件长得有点原始,图标、窗口模式什么的都没做个性化。
进阶定制版:
实际项目中,我们通常会加上一堆参数。下面是几个常见操作系统的例子,注意路径分隔符的差异:
Windows - PowerShell:
pyinstaller -n SnakeGame `
-i img/icon.png `
--clean --onedir `
--windowed `
--add-data="img;img" `
--exclude-module="numpy" `
main.py
Windows - cmd:
# 打包到一个目录 pyinstaller -n PID_Tool -i img/logo.ico ^ --clean --onedir ^ --add-data="res;res" ^ --add-data="img;img" ^ --exclude-module="matplotlib" ^ app.py
Linux / Mac:
# 打包成单文件 pyinstaller -n PID_Tool -i img/logo.ico --clean --onefile --add-data="res:res" --add-data="img:img" --exclude-module="matplotlib" main.py
参数的含义很好理解:-n 指定程序名字,-i 指定图标,--onedir 打包成文件夹(--onefile 则是单文件),--windowed 表示有窗口界面(不加就是控制台程序),--add-data 用来带上资源文件,--exclude-module 可以把不需要的第三方模块踢掉,减小软件包体积。
如果每次都要敲一长串命令,很容易手滑出错。更聪明的做法是把这些参数写到一个Python脚本里,下次直接运行脚本就行。
假设你的程序叫PID_GUI_Tool,入口文件是main.py。在main.py同目录下新建一个package.py,写入以下内容:
import PyInstaller.__main__
# 这里的是不需要打包进去的三方模块,可以减少软件包的体积
excluded_modules = [
"scipy",
"matplotlib",
]
append_string = []
for mod in excluded_modules:
append_string += [f'--exclude-module={mod}']
PyInstaller.__main__.run([
'-y', # 如果dist文件夹内已经存在生成文件,则不询问用户,直接覆盖
# '-p', 'src', # 设置 Python 导入模块的路径(和设置 PYTHONPATH 环境变量的作用相似)。也可使用路径分隔符(Windows 使用分号;,Linux 使用冒号:)来分隔多个路径
'main.py', # 主程序入口
'--onedir', # -D 文件夹
# '--onefile', # -F 单文件
# '--nowindowed', # -c 无窗口
'--windowed', # -w 有窗口
'-n', 'PID_GUI_Tool',
'-i', 'img/logo.ico',
'--add-data=res;res', # 用法:pyinstaller main.py –add-data=src;dest。windows以;分割,mac,linux以:分割
'--add-data=img;img', # 用法:pyinstaller main.py –add-data=src;dest。windows以;分割,mac,linux以:分割
*append_string
])
然后直接执行python package.py(或者在你的编辑器里运行它),等跑完,打包好的可执行文件就会出现在dist目录下。
打包过程中难免碰到一些坑。比如最常见的这个报错:
from PIL import Image
ModuleNotFoundError: No module named 'PIL'
不用慌,这是因为代码里用到了PIL(也就是 Pillow),但 PyInstaller 有时候不会自动帮你带上。手动安装一下就好:
pip install pillow
PyInstaller 的打包流程并不复杂,无非是装依赖、调参数、跑命令。关键在于把常用的参数记熟,或者写成脚本一劳永逸。另外注意跨平台时路径分隔符的区别,以及资源文件的--add-data写法。遇到缺失模块的错误,先看看是不是漏装了依赖,或者用--hidden-import手动指定一下。掌握了这些,给Python项目打包就基本没啥障碍了。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8