PyInstaller概述

PyInstaller将Python应用程序及其所有依赖项捆绑到单个包中。用户无需安装Python解释器或任何模块即可运行打包的应用程序

文档: https://pyinstaller.readthedocs.io/
网站: http://www.pyinstaller.org/
代码: https://github.com/pyinstaller/pyinstaller

PyInstaller读取您编写的Python脚本。它分析您的代码以发现您的脚本执行所需的所有其他模块和库。然后,它会收集所有这些文件的副本–包括活动的Python解释器!–并将它们与脚本放在单个文件夹中,或者也可以放在单个可执行文件中

PyInstaller在Windows、MacOSX和GNU/Linux上进行了测试。但是,它不是交叉编译器:要制作Windows应用程序,您需要在Windows中运行PyInstaller;要制作GNU/Linux应用程序,需要在GNU/Linux等环境中运行它。PyInstaller已成功用于AIX、Solaris、FreeBSD和OpenBSD,但作为持续集成测试的一部分,没有针对它们进行测试

主要优势

  • 开箱即用,可与任何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在PyPI上可用。您可以通过pip安装它:

pip install pyinstaller

要求和测试平台

  • 巨蟒:
  • 3.6-3.9
  • tinyaes1.0+(仅当使用字节码加密时)。与其安装天鹅座,pip install pyinstaller[encryption]取而代之的是
  • Windows(32位/64位):
  • PyInstaller应该可以在Windows 7或更新版本上运行,但我们只正式支持Windows 8+
  • 由于以下原因,当不使用虚拟环境时,我们不支持从Windows商店安装Pythonpermission errors那不是很容易修好的
  • GNU/Linux(32位/64位)
  • LDD:用于打印每个程序或共享库所需共享库的控制台应用程序。这通常可以在分发包glibc或libc-bin中找到
  • objdump:显示对象文件信息的控制台应用程序。这通常可以在分发包的binutils中找到
  • objcopy:复制和翻译目标文件的控制台应用程序。这通常也可以在分发包的binutils中找到
  • Mac OS X(64位):
  • Mac OS X 10.13(High Sierra)或更高版本

用法

基本用法非常简单,只需针对您的主脚本运行即可:

pyinstaller /path/to/yourscript.py

有关更多详细信息,请参阅manual

未经测试的平台

已经贡献了以下平台,欢迎对这些平台进行任何反馈或增强

  • FreeBSD
  • LDD
  • Solaris
  • LDD
  • 对象转储
  • AIX
  • AIX 6.1或更高版本。PyInstaller不能使用静态链接的Python库
  • LDD
  • PowerPC GNU/Linux(Debian)

在使用任何贡献的平台之前,您需要构建PyInstaller引导加载器,因为我们不提供二进制包。下载PyInstaller源代码,并构建引导加载器:

cd bootloader
python ./waf all

然后安装PyInstaller:

python setup.py install

或者直接从源代码(pyinstaller.py)使用它

支持

看见http://www.pyinstaller.org/support.html有关如何获得帮助以及商业支持的信息

此版本中的更改

您可以在以下位置找到此版本中更改的详细列表Changelog手册的一节

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。