1. 首页 » 生活常识

使用PyInstaller创建新文件夹的详细教程

当我们完成一个 Python 程序的编写,尤其是一个 GUI 相关的应用程序时,如果我们想要让别人也来使用它,我们当然不可能要求用户安装 Python 环境,然后运行源代码,而应该由开发者对 Python 源代码进行打包,得到可安装的应用后,再进行分发。PyInstaller,就是一个开箱即用的 Python 应用打包工具。

PyInstaller - 开箱即用的 Python 应用打包工具

PyInstaller

简介

PyInstaller,是 pyinstaller 在 Github 上开源的 Python 应用打包工具,仓库位于https://github.com/pyinstaller/pyinstaller,目前版本为 v4.3。

PyInstaller 是一个用来将 Python 程序打包成一个独立可执行软件包,支持 Windows、Linux 和 Mac OS X。

PyInstaller 可以读取 Python 脚本,分析代码以发现脚本执行所需的所有其他模块和库。然后收集所有这些文件的副本,包括 Python 解释器,并将其与脚本一起放在单个文件夹中,或者可选地在单个可执行文件中。

PyInstaller - 开箱即用的 Python 应用打包工具

pyinstaller

使用

PyInstaller 可以使用 pip 安装:

pip install pyinstaller

PyInstaller 要求 Python 3.6+,支持 Windows 7+,支持 Linux 系统,支持 Mac OS X 10.13+。PyInstaller 不支持交叉编译,需要在相对应的目标平台上进行打包。

相比于其他的 Python打包工具,PyInstaller 优势众多,包括:

开箱即用,可与任何Python 3.6-3.9版配合使用完全多平台,并使用操作系统支持来加载动态库,从而确保完全兼容正确捆绑主要的Python软件包,例如numpy,PyQt5,PySide2,Django,wxPython,matplotlib和其他现成的软件包兼容许多现成的第三方包装(使外部软件包正常工作所需的所有技巧已经集成)完全支持PyQt5,PySide2,wxPython,matplotlib或Django之类的库,而无需手动处理插件或外部数据文件与OS X上的代码签名一起使用在Windows上捆绑MS Visual C ++ DLL

PyInstaller - 开箱即用的 Python 应用打包工具

pyinstaller

PyInstaller 是一个命令行工具。安装完成后,最简单的用法是在命令行进入到目标项目的文件夹,并运行:

pyinstaller yourprogram.py

PyInstaller 会对 Python 项目进行打包,并把打包得到的程序放到 dist 子文件夹中。

PyInstaller 提供了丰富的命令行选项,来适应不同场景的打包任务。一个较为复杂的 PyInstaller 使用命令如下:

pyinstaller --noconfirm --log-level=WARN \
    --onefile --nowindow \
    --add-data="README:." \
    --add-data="image1.png:img" \
    --add-binary="libfoo.so:lib" \
    --hidden-import=secret1 \
    --hidden-import=secret2 \
    --upx-dir=/usr/local/share/ \
    myscript.spec

命令 pyinstaller 的格式如下:

pyinstaller [options] script [script …] | specfile

我们来看一下 PyInstaller 的工作流程。对于一个最简单的使用场景:

pyinstaller myscript.py

其中 myscript.py 包含了 Python 程序。PyInstaller 会对代码文件进行分析,并:

选项配置写入 myscript.spec 文件创建一个 build 文件夹写入日志文件和工作文件到 build 文件夹创建一个 dist 文件夹把 myscript 可执行文件夹写入到 dist

命令 pyinstaller 的命令行参数主要包括以下:

通用选项:通用的命令选项,包括版本、日志等生成目标选项:打包生成目标相关的选项打包源选项:需要打包哪些文件的相关选项打包过程选项:如何进行打包的详细配置Windows 和 Mac OS X 等平台的特定选项

其中,最常用的选项包括:

--distpath DIR:打包输出文件夹,默认为 ./dist-D, --onedir:打包输出的应用为一个文件夹-F, --onefile:打包输出的应用为单一一个可执行文件-n NAME, --name NAME:应用名称--add-data :额外需要进行打包的非二进制文件,如额外的图片素材等-p DIR, --paths DIR:搜索 Python import 的路径--collect-all MODULENAME:收集所有的子模块、数据文件、和二进制文件--key KEY:用于加密 Python bytecode 的密钥-c, --console, --nowindowed:程序显示一个命令行窗口来进行输入输出-w, --windowed, --noconsole:程序隐藏命令行窗口,仅显示 GUI

PyInstaller 也能通过引入库的方式,在 Python 代码中使用:

import PyInstaller.__main__

PyInstaller.__main__.run([
    'my_script.py',
    '--onefile',
    '--windowed'
])

该 Python 代码等价于以下的 pyinstaller 命令:

pyinstaller my_script.py --onefile --windowed

PyInstaller 还提供了 Python 编译优化选项,通过提供不同等级的优化选项,得到不同优化级别的编译输出:

# run with basic optimizations
python -O -m PyInstaller myscript.py

# also discard docstrings
python -OO -m PyInstaller myscript.py

Python 的字节码是很容易被解码的,PyInstaller 提供了加密选项,通过提供密钥,就可以十分简单地对 Python 字节码进行加密。如果需要该功能,安装时需要额外的选项:

pip install pyinstaller[encryption]

并在 pyinstaller 提供 --key 选项。key 是一个 16 位的字符串,PyInstaller 使用 tinyaes 进行加密。

总结

PyInstaller 可以将 Python 程序打包成一个独立可执行软件包,支持 Windows、Linux 和 Mac OS X。PyIntaller 使用简单,开箱即用,操作简单,同时拥有丰富的功能,支持各种场景的打包工作,是进行 Python 程序开发的必备工具之一。

PyInstaller - 开箱即用的 Python 应用打包工具

pyinstaller

声明:本文由"麦兜"发布,不代表"破站"立场,转载联系作者并注明出处:https://www.848586.cn/142054.html