跳到主要内容

Rattler 正在迁移到 conda 组织

·3 分钟阅读
Wolf Vollprecht
prefix.dev 首席执行官
Bas Zalmstra
prefix.dev

我们很高兴地宣布,Rattler,一套用于 conda 包管理的 Rust crate 库,带有 Python 绑定,已正式加入 conda 社区组织。此举标志着 conda 生态系统发展的一个重要里程碑。conda 社区是 conda 生态系统的多方利益相关者组织,也是制定新标准的权威机构。

什么是 rattler

Rattler crate 库最初由 Bas Zalmstra 创建,并在 prefix.dev 进一步开发。

其主要功能包括

  • 为 Rust 开发者提供的简洁、富有表现力的 API
  • 精心设计的 Python 绑定和文档
  • conda 生态系统中最快的 SAT 求解器 (resolvo)

Rattler 的功能涵盖从读取索引元数据和搜索包,到解析、下载、安装,甚至编写包。在 prefix.dev,conda 生态系统的所有下一代工具都构建在 Rattler 之上,例如

  • Pixi:一个用于 conda 和 PyPI 包的现代包管理器
  • rattler-build:一个用于构建 conda 包的全新且非常快速的工具,采用社区设计的、改进的配方格式

采用和 Python 绑定

Rattler 已被广泛用于构建自定义工具(大型组织如 PalantirQuantCoChicago Trading Company 等都在使用)。

Rattler 的 Python 绑定最初由 Tarun Pratap Singh 开发,是程序化处理 conda 包的最简单方法之一。它们可以从 conda-forgePyPI 安装!

import asyncio
import tempfile
from rattler import solve, install, VirtualPackage

async def main() -> None:
# Let's solve the environment
print("started solving the environment")
solved_records = await solve(
# Channels to use for solving
channels=["conda-forge"],
# The specs to solve for
specs=["python 3.12.*", "pip", "requests 2.31.*"],
# Virtual packages define the specifications of the environment
virtual_packages=VirtualPackage.detect(),
)
print("solved required dependencies")

# Install the packages into a new environment (or updates it if it already existed).
env_path = tempfile.mkdtemp()
await install(
records=solved_records,
target_prefix=env_path,
)

print(f"created environment: {env_path}")

if __name__ == "__main__":
asyncio.run(main())

迁移到 Conda 社区

通过加入 conda 社区作为一个新的社区项目,rattler 项目现在归社区治理。这种转变为更广泛的 conda 生态系统开启了新的机会,可以利用并贡献于这个强大的工具集。开发工作继续由 prefix.dev 团队领导,他们将继续高速推进 conda 生态系统的众多创新。

什么是 Conda 社区?

conda 社区是一个开源软件社区,致力于开发围绕 conda 包的工具。conda 社区的成员是 prefix.dev、Anaconda、Quansight、NVIDIA、Voltron Data 以及其他对 conda 生态系统有既得利益的公司的员工。

如果您是一名工具开发者,并且对 rattlerpy-rattler 的功能感兴趣,您可以在这里找到文档

您可以在 prefix.dev Discord 上找到 Rattler 的作者 - 随时连接并提出问题!我们当然也很活跃于 conda 社区频道(例如 Element)。