Rattler 正在迁移到 conda 组织
我们很高兴地宣布,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 已被广泛用于构建自定义工具(大型组织如 Palantir、QuantCo 和 Chicago Trading Company 等都在使用)。
Rattler 的 Python 绑定最初由 Tarun Pratap Singh 开发,是程序化处理 conda 包的最简单方法之一。它们可以从 conda-forge
或 PyPI
安装!
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 生态系统有既得利益的公司的员工。
如果您是一名工具开发者,并且对 rattler
或 py-rattler
的功能感兴趣,您可以在这里找到文档
rattler
的 Rust 文档(注意:每个 crate 都有自己的文档)- Rattler Python 绑定的文档
您可以在 prefix.dev Discord 上找到 Rattler 的作者 - 随时连接并提出问题!我们当然也很活跃于 conda 社区频道(例如 Element)。