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
发表评论