几天之前 开发人员介绍了PyOxidizer实用程序的第一个版本,以 可用于将Python项目打包为单独的可执行文件的实用程序,包括Python解释器以及所有必需的库和资源。
这样的文件可以在没有安装Python工具包的环境中运行,或者与所需的Python版本无关。
PyOxidizer也可以生成与系统库不相关的静态相关的可执行文件。 项目代码以Rust语言编写,并根据MPL(Mozilla公共许可证)2.0分发。
关于PyOxidizer?
萨尔瓦多PROYECTO 基于与Rust语言同名的模块,它允许您将Python解释器嵌入Rust程序 在它们上运行Python脚本。
高温氧化剂 现在,它已经超出了Rust的插件范围,并被定位为更广泛的受众可用的工具,用于构建和分发独立的Python包。
PyOxidizer一个实用程序,旨在解决如何分发Python应用程序的问题。
对于那些不需要以可执行文件形式分发应用程序的人,PyOxidizer提供了机会来生成合适的库,以与任何应用程序链接以将Python解释器及其必要的扩展集嵌入其中。
Russel Keith-Magee将Python的应用程序分发普遍认为是未解决的问题,因为Russel Keith-Magee将代码分发视为对Python寿命的生存威胁。 用他的话说,Python从来没有关于如何将我的代码提供给其他人的一致的历史,尤其是在其他人不是开发人员而只想使用我的应用程序的情况下。
对于最终用户,以单个可执行文件的形式交付项目 它极大地简化了安装并消除了选择依赖项的工作,这对于例如视频编辑器之类的复杂Python项目而言非常重要。
另一方面 对于应用程序开发人员,PyOxidizer使他们可以节省组织应用程序交付的时间 无需使用不同的工具来为不同的操作系统创建程序包。
PyOxidizer如何工作?
使用建议的构建 它也对性能产生积极影响: 通过删除导入并定义基本模块,PyOxidizer中生成的文件比使用Python系统运行得更快。
在PyOxidizer中 模块从内存中导入 (所有内置模块都立即加载到内存中,然后在没有磁盘访问的情况下使用)。 在测试中,使用PyOxidizer的应用程序启动时间大约减少了一半。
从类似的现有项目中,可以观察到: PyInstaller(将文件解压缩到一个临时目录中并从中导入模块)。
- py2exe(链接到Windows平台,需要分发多个文件),py2app(链接到macOS)
- Cx-freeze(需要单独的依赖项包装),Shiv和PEX(形成zip包并在系统上需要Python)
- Nuitka(编译代码,而不是嵌入式解释器),pynsist(链接到Windows),PyRun(专有开发,不解释操作原理)。
在目前的发展阶段, PyOxidizer已经实现了主要功能,可以为Windows,macOS和Linux生成可执行文件。
在影响深远的功能中指出,没有标准的编译环境,无法生成MSI,DMG和deb / rpm格式的程序包,并且存在涉及C语言复杂扩展的项目打包问题。
尽管缺少支持该版本的说明(“ pyoxidizer添加”,“ pyoxidizer分析”和“ pyoxidizer升级”),并且对Terminfo和Readline的支持有限,但缺少对Python 3.7以外版本的支持,对资源压缩的支持,无法交叉编译。
数据来源: https://pyoxidizer.readthedocs.io