PyInstaller 将 Python 应用程序及其所有依赖项捆绑到一个包中。
项目描述
PyInstaller 将 Python 应用程序及其所有依赖项捆绑到一个包中。用户无需安装 Python 解释器或任何模块即可运行打包的应用程序。
PyInstaller 读取您编写的 Python 脚本。它分析您的代码以发现脚本执行所需的所有其他模块和库。然后它收集所有这些文件的副本——包括活动的 Python 解释器!– 并将它们与您的脚本放在一个文件夹中,或者可选地放在一个可执行文件中。
PyInstaller 针对 Windows、macOS 和 GNU/Linux 进行了测试。但是,它不是交叉编译器:要制作 Windows 应用程序,您需要在 Windows 中运行 PyInstaller;要制作 GNU/Linux 应用程序,您可以在 GNU/Linux 等环境中运行它。PyInstaller 已成功用于 AIX、Solaris、FreeBSD 和 OpenBSD,但作为持续集成测试的一部分,并未针对它们进行测试。
主要优势
适用于任何 Python 版本 3.7-3.10 的开箱即用。
完全多平台,并使用操作系统支持加载动态库,从而确保完全兼容。
正确捆绑了主要的 Python 包,例如 numpy、PyQt5、PySide2、PyQt6、PySide6、wxPython、matplotlib 和其他开箱即用的包。
与许多开箱即用的第 3 方软件包兼容。(使外部包工作所需的所有技巧都已集成。)
适用于 macOS 上的代码签名。
在 Windows 上捆绑 MS Visual C++ DLL。
安装
PyInstaller 在 PyPI 上可用。您可以通过pip安装它:
pip install pyinstaller
需求和测试平台
- Python:
3.7-3.10。请注意,Python 3.10.0 包含一个错误,导致 PyInstaller 不支持它。PyInstaller 也不适用于 Python 3.11 的 beta 版本。
tinyaes 1.0+(仅在使用字节码加密时)。而不是安装 tinyaes,而是pip install pyinstaller[encryption]。
- 视窗(32 位/64 位):
PyInstaller 应该可以在 Windows 7 或更高版本上运行,但我们只正式支持 Windows 8+。
支持在不使用虚拟环境的情况下从 Windows 商店安装的 Python 需要 PyInstaller 4.4 或更高版本。
请注意,arm64上的 Windows尚不支持。如果您有这样的设备并想帮助我们添加arm64支持,请在我们的问题跟踪器上告诉我们。
- Linux:
基于x86_64、aarch64、 i686、ppc64le、s390x架构的 GNU libc 发行版。
musl libc 基于架构x86_64,aarch64的发行版。
ldd:控制台应用程序,用于打印每个程序或共享库所需的共享库。这通常可以在分发包glibc或libc-bin中找到。
objdump:用于显示来自目标文件的信息的控制台应用程序。这通常可以在分发包binutils中找到。
objcopy:用于复制和翻译目标文件的控制台应用程序。这通常也可以在分发包binutils中找到。
armv5 - armv7上的 Raspberry Pi 用户应将piwheels添加为额外的索引 url,然后像往常一样pip install pyinstaller 。
- macOS(x86_64或arm64):
macOS 10.15 (Catalina) 或更新版本。
支持构建universal2应用程序,前提是您安装的Python 和所有依赖项也都编译为universal2。
用法
基本用法非常简单,只需针对您的主脚本运行它即可:
pyinstaller /path/to/yourscript.py
有关详细信息,请参阅手册。
未经测试的平台
以下平台已被贡献,欢迎对这些平台提出任何反馈或改进。
- 自由BSD
ldd
- 索拉里斯
ldd
对象转储
- 艾克斯
AIX 6.1 或更高版本。PyInstaller 不适用于静态链接的 Python 库。
ldd
上面未列出的任何其他 libc 实现/架构组合上的 Linux。
在使用任何贡献的平台之前,您需要构建 PyInstaller 引导加载程序。这将在您pip install pyinstaller时自动发生,前提是您已经安装了适当的 C 编译器(通常是gcc或clang)和 zlib 的开发头文件。
支持
此版本中的更改
您可以在手册的更改日志部分找到此版本中更改的详细列表。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。