跳转至

开始使用
Getting Started

除了管理工作流和环境,Pixi 还可以构建包。这在以下场景中非常有用:

  • 构建并上传包到 conda 通道(channel)
  • 允许用户直接依赖源代码并自动构建它
  • 在工作区(workspace)中管理多个包

我们一直在努力通过 Pixi 的 build 功能支持这些用例。愿景是能够从源代码构建任意语言、任意平台的包。

已知限制

目前,build 功能有一些限制:

  1. 构建后端 数量有限
  2. 构建后端可能缺少很多参数/功能
  3. 工作区依赖不能继承

设置项目清单(manifest)#

这是使用 pixi-build 功能的 Pixi 项目清单(manifest)概述。

项目清单中 [package] 部分的更详细概述可在 项目清单参考 中找到。

pixi.toml
### Specifies properties for the whole workspace ###
[workspace]
preview = ["pixi-build"]
channels = ["https://prefix.dev/conda-forge"]
platforms = ["win-64", "linux-64", "osx-arm64", "osx-64"]

[tasks]
start = "rich-example-main"

[dependencies]
python_rich = { path = "." }

### Specify the package properties ###
[package]
name = "python_rich"
version = "0.1.0"

# We are using `pixi-build-python` in order to build a Python package
[package.build.backend]
name = "pixi-build-python"
version = "0.*"


# The Python package `python_rich` uses `hatchling` as Python build backend
[package.host-dependencies]
hatchling = "*"

# The Python package `python_rich` has a run dependency on `rich`
[package.run-dependencies]
rich = "13.9.*"

[workspace] 部分,您可以指定名称、通道(channels)和平台等属性。这目前是 [project] 的别名。

由于构建功能仍处于预览阶段,您需要将 "pixi-build" 添加到 workspace.preview

[workspace]
preview = ["pixi-build"]

package 中指定要构建的包的特定属性。

[package]
name = "python_rich"
version = "0.1.0"

包通过使用构建后端来构建。通过指定 package.build.backendpackage.build.channels,您可以确定使用哪个后端以及从哪个通道(channel)下载它。

不同的构建后端可用

Pixi 后端描述了如何为特定语言或构建工具构建 conda 包。在这个例子中,我们使用 pixi-build-python 后端来构建 Python 包。

[package.build.backend]
name = "pixi-build-python"
version = "0.*"

我们需要将我们的包 python_rich 作为源代码依赖添加到工作区。

[dependencies]
python_rich = { path = "." }

python_rich 使用 hatchling 作为 Python 构建后端,因此需要在 host-dependencies 中提及。

hatchling 这样的 Python PEP517 后端知道如何构建 Python 包。因此 hatchling 创建一个 Python 包,而 pixi-build-python 将 Python 包转换为 conda 包。

依赖类型章节 中了解更多关于 host-dependencies 的信息。

[package.host-dependencies]
hatchling = "*"

我们添加 rich 作为包的运行依赖。这是必要的,因为包在运行时使用 rich。 您可以在依赖类型章节 中了解更多关于运行依赖的信息。

[package.run-dependencies]
rich = "13.9.*"

CLI 命令#

使用预览功能,您现在可以从源代码构建包。

  • 添加了 pixi build,它会将您的包构建成 .conda 文件。
  • 其他命令如 pixi installpixi run 在存在 pathgiturl 依赖时会自动使用构建功能。