4 个版本 (重大更改)

0.9.0 2023年9月22日
0.8.0 2023年8月22日
0.7.0 2023年8月11日
0.6.0 2023年7月7日

#2365开发工具

Download history 4/week @ 2024-03-29 1/week @ 2024-05-24 1/week @ 2024-05-31

每月160 次下载

BSD-3-Clause

200KB
4K SLoC

An image of a snake in a box

Rattler:Rust 用于快速处理 conda 包的 crate

License Build Status Project Chat docs main

Rattler 是一个库,它提供了 conda 生态系统(什么是 conda 和 conda-forge?)中常用的功能。该库的目的是使程序和其他库能够轻松地与 conda 生态系统交互,而无需依赖 Python。其主要用例是一个库,您可以使用它在自己的工具中提供与 conda 相关的工作流程。

Rattler 用 Rust 编写,并试图提供干净的功能 API(参见:组件)。考虑到主要目标,我们旨在提供对不同语言的绑定,以便轻松将 Rattler 集成到非 Rust 项目中。

Rattler 在 https://prefix.dev 后端中被积极使用。

展示

此存储库还包含一个二进制文件(使用 cargo run 尝试),展示了该库的一些功能。这是一个从零开始安装包含 cowpy 和其所有依赖项的环境的示例(包括 Python!)

Installing an environment

试试吧!

在开始之前,请确保您有以下先决条件

按照以下步骤克隆、编译和运行 rattler 项目

# Clone the rattler repository along with its submodules:
git clone --recursive https://github.com/mamba-org/rattler.git
cd rattler

# Set up an environment with the required dependencies for compiling rattler and libsolv:
micromamba create -f environment.yml
micromamba activate rattler-env

# Compile and execute rattler to create a JupyterLab instance:
cargo run --release --bin rattler create jupyterlab

上述命令将以发布模式执行 rattler 可执行文件。它将下载并安装一个包含 jupyterlab 及其运行所需的所有依赖项(如 python)的环境到 .prefix 文件夹中

运行以下命令以启动 jupyterlab

# on windows
.\.prefix\Scripts\jupyter-lab.exe

# on linux or macOS
 ./.prefix/bin/jupyter-lab

哇!您的系统已成功安装了 jupyterlab!当然,您可以使用这种方式安装任何想要的包。试试吧!

贡献 😍

我们非常希望您能参与贡献!有关更多信息,请参阅 CONTRIBUTION.md。对于问题、请求或轻松聊天,我们在 discord 服务器上非常活跃。您可以通过此链接加入我们的 discord 服务器:加入 discord 服务器

组件

Rattler 由几个提供不同功能的 crate 组成。

  • rattler_conda_types:conda 生态系统中所有数据结构的基础类型。
  • rattler_package_streaming:提供下载、提取和创建 conda 包存档的功能。
  • rattler_repodata_gateway:从索引中下载、读取和处理现有 conda 包的信息。
  • rattler_shell:激活现有环境并在其中运行程序的代码。
  • rattler_solve:一个后端无关的库,用于解决包可满足性问题。
  • rattler_virtual_packages:一个用于检测系统能力的 crate。
  • rattler:使用上述 crate 从头创建完整环境的功能。
  • rattler-bin:一个使用上述所有 crate 的包管理器的示例(参见:展示

您可以在 crates 文件夹中找到这些 crate。

什么是 conda 及 conda-forge?

conda 生态系统提供了跨平台、二进制包,您可以使用任何编程语言使用它们。 conda 是一个开源的包管理系统和环境管理系统,可以安装和管理多个版本的软件包及其依赖项。 conda 是用 Python 编写的。Rattler 的目标是提供从 Rust 工作所需的所有 conda 生态系统功能。Rattler 不是 conda 的重实现。 conda 是一个包管理工具。Rattler 是一个 ,可以从不同的语言和应用程序中与 conda 生态系统一起工作。例如,它为 https://prefix.dev 的后端提供动力。

conda-forge 是一个社区驱动的努力,旨在将新的和现有的软件带入 conda 生态系统。它提供由社区贡献者维护的 数万个最新 包。有关可用包的概述,请参阅 https://prefix.dev

依赖关系

~3MB
~50K SLoC