CMD命令:
pip3 install pyinstaller -i https://pypi.mirrors.ustc.edu.cn/simple/
例如,如果你的文件在 D:\my_scripts 文件夹下,你需要输入:
D:
cd D:\my_scripts
执行打包命令。这里有两种常见的模式:
模式一:生成单个独立的 .exe 文件(推荐)
这是最常用的方式,它会把所有依赖(包括 Python 解释器本身)都打包进一个 .exe 文件里,非常方便分发。
pyinstaller -F my.py
模式二:生成一个包含多个文件的文件夹
这种方式打包速度更快,启动程序时也可能更快,但你需要把整个文件夹都拷贝给别人。
pyinstaller -D my.py
如果要带图标:
pyinstaller -F -i my.ico my.py
-D 或 --onedir 是默认模式,即使你不写这个参数,PyInstaller 也会这么做。
-F 或 --onefile 参数是关键,表示生成单个文件。
所以批处理 getExe.bat可以写成:
cd %~dp0
pyinstaller -F -i my.ico my.py
这样就好生成了。
找到并运行你的 .exe 文件
打包完成后,PyInstaller 会在你的脚本目录下创建两个新文件夹:build 和 dist,以及一个 .spec 文件。
build 文件夹:包含打包过程中的临时文件,可以安全删除。
.spec 文件:打包的配置文件,一般不需要理会。
dist 文件夹:这是最重要的文件夹! 你的可执行文件就在这里面。
进入 dist 文件夹。
你会看到一个名为 my.exe 的文件。
现在,你可以直接双击运行它,或者将这个 dist 文件夹(模式二)或单独的 my.exe 文件(模式一)拷贝到任何没有安装 Python 的 Windows 电脑上运行。
常见问题与高级用法:
1. 打包 GUI 程序时,如何去掉黑色的命令行窗口?
如果你的 my.py 是一个图形界面程序(例如使用了 Tkinter, PyQt, wxPython 等),你肯定不希望运行时弹出一个黑色的命令行窗口。
只需要在打包命令中加入 -w 或 --windowed / --noconsole 参数即可。
pyinstaller -F -w my.py
2. 如何处理脚本中用到的图片、数据等外部文件?
如果你的脚本需要读取外部文件(例如 icon.ico, data.csv),直接打包会找不到这些文件。
简单粗暴的方法:手动将这些外部文件复制到 dist 文件夹中,确保它们和 .exe 文件在同一级目录。
更专业的方法:使用 --add-data (Windows) 或 --add-files (macOS/Linux) 参数。
例如,你的脚本需要一个 images 文件夹和一个 config.json 文件:
# Windows 上使用分号 ; 分隔源和目标
pyinstaller -F --add-data "images;images" --add-data "config.json;." my.py
这个命令会把 images 文件夹和 config.json 文件一起打包,并在运行时解压到 .exe 所在的临时目录中,你的代码可以通过 sys._MEIPASS 路径来访问它们。
3. 如何给你的 .exe 文件添加一个自定义图标?
使用 -i 或 --icon 参数。
pyinstaller -F -i my.ico my.py
my.ico 是你的图标文件名,它需要和你的 .py 文件在同一目录下,或者提供完整路径。