环境准备
新建一个conda env,里面只包含项目必须的库,不要安装多余的库。
随后,使用pip install pyinstaller
安装pyinstaller
项目结构
假设项目结构如下:
myproject
|
│ main.py
│ requirements.txt
| apple.ico
|
├─resources
│ 0.jpg
│ 1.png
│ 2.jpg
│ 3.png
main.py中包含以下内容:
with open(".\resources\1.png","r") as img_file:
也就是说最后生成的可执行文件要和resources在同一个目录下
打包文件的编写
在项目中新建文件夹,并在里面增加一个bat,Linux系统则是sh脚本,目录结构变成如下情况:
myproject
|
│ main.py
│ requirements.txt
| apple.ico
|
├─resources
│ 0.jpg
│ 1.png
│ 2.jpg
│ 3.png
└─打包
打包.bat(打包.sh)
Windows系统
编辑bat脚本,写入如下内容:
call conda activate conda_env
Pyinstaller -F -w -i apple.ico -n AppName ..\main.py
copy .\dist\AppName.exe ..\ExeName.exe
Linux系统
编辑sh脚本,写入如下内容:
#!/bin/bash
# 查找 conda 的路径
path=$(whereis activate)
path=${path#*:}
# 去除路径中的空格
path=$(echo $path | tr -d ' ')
# 检查 conda 是否存在
if [[ -z $path ]]; then
echo "未找到conda activate,请确保已安装并设置了正确的环境变量。"
exit 1
fi
source $path conda_env
pyinstaller -F -i apple.ico -n AppName ../main.py
ln -r ./dist/AppName ../ExeName
pyinstall参数说明
参数 | 说明 |
---|---|
-F | 生成一个可执行文件 |
-D | 生成一个目录(包含多个文件)作为可执行文件 |
-w | 运行exe时,不显示命令行窗口(仅对Windows有效) |
-i | 该参数后跟可执行文件的icon图标路径 |
不想更换图标的话,去掉-i
和后面的图标名就行
-F
和-D
互斥,一般选择-F
-w
的选取则看具体情况
自选变量说明
conda_env
是当前项目所用的conda env的名字,需要和环境准备章节保持一致
ExeName
可自由选取,它是最终生成的exe的名字
AppName
的选取没有硬性要求,这里推荐和ExeName
保持一致
文件夹打包
、打包.bat
和打包.sh
这些名称也可任意选择
运行结果
双击运行打包.bat
或打包.sh
,项目结构变为下图所示:
myproject
|
│ main.py
│ requirements.txt
| apple.ico
| ExeName.exe(ExeName)
|
├─resources
│ 0.jpg
│ 1.png
│ 2.jpg
│ 3.png
└─打包
│ AppName.spec
│ 打包.bat(打包.sh)
│
│
├─build
│ ...
│
└─dist
AppName.exe(APPName)
此时得到的ExeName.exe即为可执行文件,Linux系统下则是ExeName
拷贝可执行文件时,必须连同resources文件夹一起拷贝