Pop的构建系统,用于构建Python项目
项目描述
简介
Pop-Build是pop项目的单二进制构建器。虽然它是为了支持pop项目而编写的,但它可以用于任何Python项目。
入门
Pop-Build背后的主要思想是使构建Python项目作为一个单一的冻结二进制文件变得容易。因此,使用pop-build只需几个步骤。
因此,我们可以从一个现有的Python应用程序开始,这个快速入门将假设您的Python项目有一个标准的setup.py和requirements.txt。
大多数项目还需要一个run.py。
run.py
由于Pop-Build创建了一个单一的二进制文件,它需要一个单一的入口点。这个入口点在文件run.py中定义。这只是一个简单的Python脚本,用于启动您的应用程序。run.py的内容通常是用于setuptools入口点或distutils中使用的启动脚本中的代码。没有特别的run.py,pop-build只需要一个干净的Python入口点。
一个典型的run.py将如下所示
import myapp
def main():
myapp.start()
main()
只是些简单的Python!如果您正在构建一个pop项目,那么pop-seed将为您创建run.py。
运行 Pop-Build
没错!除了 run.py 之外,你的 Python 项目可能已经拥有了所有必要的东西!Pop-Build 使用 setup.py 和 requirements.txt 文件来构建环境。
因此,假设你有一个标准的 Python 项目,你只需要进入那个目录并运行 pop-build,在这个例子中,我们将假设应用程序名为 foo
pop-build -n foo
这将启动这个过程,生成的二进制文件将放在 dist/foo
现在二进制文件可用,可以直接调用。
发生了什么?
Pop-Build 从你执行 pop-build 时的 Python 版本开始。这个 Python 将嵌入到你的二进制文件中。接下来,它为你的应用程序创建一个 venv。有了 venv,Pop-Build 就会填充它。这个 venv 包含了所有定义为应用程序主要需求的项目依赖项,包括应用程序本身。
现在 venv 已经设置好了,我们告诉 PyInstaller 从 run.py 创建一个二进制文件。但 PyInstaller 主要是从 run.py 中导入的所有内容构建二进制文件。这是为了构建一个较小的二进制文件,并仅包含最需要的代码。但对于许多应用程序来说,情况并非如此,通常是在后期导入,并且应用程序假定有一个更大的 Python 环境可用。通常还需要额外的文件,并且通常通过 setup.py 添加。
Pop-Build 不是遵循导入,而是将 venv 打包到 PyInstaller 创建的二进制文件中。这意味着你可以有足够的保证,完整的所需环境是可用的。这确实会使二进制文件更大,但它允许更简单、更可靠的构建。此外,二进制文件通常并不大。
使用构建插件
许多 Python 项目需要 C 库。那么,如何将这些动态库添加到最终的二进制文件中呢?Pop-Build 有一个解决方案。
在运行 pop-build 时,我们可以使用一个配置文件。该文件允许定义任何可以通过命令行传递的选项,还可以定义外部构建的例程。
以下是一个 Pop-Build 配置示例,该配置添加了库 libsodium
build:
libsodium:
make:
- wget https://download.libsodium.org/libsodium/releases/LATEST.tar.gz
- tar xvf LATEST.tar.gz
- cd libsodium-stable && ./configure && make
src: libsodium-stable/src/libsodium/.libs/libsodium.so
dest: lib/
此示例显示了如何定义一个库进行下载和构建,然后是 src,它是相对于构建根的相对路径,以及 dest,它是相对于 venv 根的相对路径。
src 可以是一个目录或文件列表,dest 只是一个存储文件的单一目录。
项目详情
下载文件
下载适合您平台文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。