一个用Rust编写的新项目旨在简化将Python应用程序打包和分发为独立的二进制可执行文件的过程-长期以来,这一直是Python开发人员的难题。
根据其GitHub README, PyOxidizer是“ Rust板条箱的集合,这些板条箱有助于构建包含Python解释器的库和二进制文件。” 开发人员声称,使用PyOxidizer可以为嵌入了Python解释器的Python应用程序构建可执行文件,而没有其他运行时依赖项。
PyOxidizer需要安装Rust 1.31或更高版本,并且仅打包使用Python 3.7编写的应用程序。 要使用PyOxidizer,开发人员会创建一个TOML文件来描述如何嵌入给定的Python应用程序,然后使用指向该TOML文件的环境变量来构建并运行PyOxidizer。
PyOxidizer在使用自定义构建的Python解释器的过程中与其他打包解决方案不同,该解释器设计为静态链接并嵌入到另一个程序中。 其他解决方案,例如PyInstaller,重新分配了现有的现有CPython .DLL,它们既方便又兼容,但并不十分灵活。 PyOxidizer还将Python应用程序的字节码打包到可执行映像中,并直接从内存(快速)而不是从文件系统(较慢)加载它。
但是,与PyInstaller一样,PyOxidizer不会对Python代码执行任何优化。 另一个项目Nuitka不仅将Python应用程序编译为独立的可执行文件,而且还尝试将性能优化应用于已编译的代码。 但是,Nuitka仍被认为是Beta级项目,许多预期的性能改进尚不可用。
PyOxidizer本身仍然是一个非常早期的项目。 它只能生成Linux二进制文件,因为它所依赖的上游项目之一(可嵌入版本的CPython)目前仅在Linux构建中可用。
From: https://www.infoworld.com/article/3330601/pyoxidizer-uses-rust-to-make-python-executables.html