PyInstaller是一个在Windows、GNU/Linux、macOS等平台下将Python程序冻结(打包)为独立可执行文件的工具, 用于在未安装Python的平台上执行Python编写的应用程序。
相比类似工具,它的主要优点是 PyInstaller 与 Python 3.7-3.10 一起工作,由于透明压缩,它构建了更小的可执行文件,它是完全多平台的,并使用操作系统支持加载动态库,从而确保完全兼容。
PyInstaller会分析Python程序,并将程序打包成一个完整的可执行文件,包括所有依赖项。此外,PyInstaller可以自动检测Python依赖库,并将其打包到可执行文件中。
PyInstaller的原理是将Python程序转换为C语言代码,并将C语言代码编译成可执行文件。具体来说,PyInstaller会将Python程序分析为一个抽象语法树(AST),然后将AST转换为C语言代码。
一. Windows系统安装pyinstaller库
1.1 安装命令
注:安装过程可能会报错, 可能原因是 pip安装源问题。具体大家百度吧。博主我是傻瓜式不行就重装,再不行再重装。
pip/pip3 install pyinstaller
# 太慢可切源
pip install -i https://pypi.douban.com/simple/ pyinstaller #豆瓣源
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller #清华源
1.2 pyinstaller 执行文件位置
C:\Users\用户名\AppData\Local\Programs\Python\Python310\Scripts
1.3 环境变量配置
path 里添加 script路径
1.4 测试是否可以使用
如下结果,说明可用。
二. Linux系统安装pyinstaller库
2.1 安装命令
注:安装过程可能会报错, 可能原因是 pip安装源问题。具体大家百度吧。博主我是傻瓜式不行就重装,再不行再重装。
pip/pip3 install pyinstaller
2.2 pyinstaller 执行文件位置
python安装路径下的bin文件夹里
2.3 环境变量配置及其他内容
如果不添加环境变量, 也不做软连接 ln -s /usr/bin/pyinstaller /home/gxliu_py/python/bin/pyinstaller
直接执行pyinstaller -v 或相关pyinstaller 命令是不无法执行的。
2.4 测试是否可用
在不添加环境变量和软连接情况下,需要使用全路经执行pyinstaller脚本。
三、pyinstaller 常用打包参数
pyinstaller --help #查看都支持哪些参数
常用的参数: 有的可能看到用的是非缩写版 参数,也是正常的。不要疑虑。
例如-->
-F, –onefile
产生一个文件用于部署 (参见XXXXX).
-D, –onedir
产生一个目录用于部署 (默认)
-K, –tk
在部署时包含 TCL/TK
-a, –ascii <--
四、打包命令
windows和linux使用的命令都是一样的,这里为了方便平时使用,直接复制 粘贴使用,就分开写了。
windows系统打包命令:
# 如果你的Python程序是一个GUI应用程序,可以使用如下命令将其打包为GUI应用程序:
# 其中,--windowed参数表示生成无控制台窗口应用程序,--icon参数表示定义程序图标。
# -F 生成单个可执行文件, -w 不显示doc 小黑框
Pyinstaller -F -w 你的脚本.py -i 你的图标.ico (pyinstaller 首字母大小写都可以)
linux系统打包命令:
pyinstaller 你的脚本.py
# 默认情况下,PyInstaller生成的可执行文件包含多个文件。
# 如果需要将所有文件打包成一个单独的可执行文件,可以使用如下命令:
# --onefile 和 -F 是一样的
pyinstaller --onefile 你的脚本.py
pyinstaller -F 你的脚本.py
#如果你的Python程序是一个控制台应用程序,可以使用如下命令将其打包为控制台应用程序
pyinstaller --console 你的脚本.py # -c --console
(暂时未用到,先记录在这里)关于PyInstaller高级用法
设置环境变量
如果你的Python程序需要使用环境变量,可以通过设置PyInstaller的环境变量来实现。例如,如果你的Python程序需要使用MY_VAR环境变量,可以使用如下命令:
pyinstaller --env MY_VAR=value yourscript.py