跳转到主要内容

Pop的构建系统,用于构建Python项目

项目描述

简介

Pop-Build是pop项目的单二进制构建器。虽然它是为了支持pop项目而编写的,但它可以用于任何Python项目。

入门

Pop-Build背后的主要思想是使构建Python项目作为一个单一的冻结二进制文件变得容易。因此,使用pop-build只需几个步骤。

因此,我们可以从一个现有的Python应用程序开始,这个快速入门将假设您的Python项目有一个标准的setup.pyrequirements.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 只是一个存储文件的单一目录。

项目详情


下载文件

下载适合您平台文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。

源分布

pop-build-3.7.tar.gz (15.8 kB 查看哈希值)

上传时间

构建分布

pop_build-3.7-py3-none-any.whl (20.3 kB 查看哈希值)

上传于 Python 3

由以下支持