10个版本 (破坏性更新)

0.9.0 2024年4月23日
0.8.1 2024年2月15日
0.7.0 2024年2月9日
0.5.0 2024年2月1日
0.1.0 2023年12月8日

#1736 in 开发工具

Download history 48/week @ 2024-04-29 85/week @ 2024-05-06 123/week @ 2024-05-13 224/week @ 2024-05-20 361/week @ 2024-05-27 1281/week @ 2024-06-03 188/week @ 2024-06-10 288/week @ 2024-06-17 331/week @ 2024-06-24 143/week @ 2024-07-01 153/week @ 2024-07-08 32/week @ 2024-07-15 207/week @ 2024-07-22 224/week @ 2024-07-29 33/week @ 2024-08-05 178/week @ 2024-08-12

642 每月下载量
pixi 中使用

BSD-3-Clause

1.5MB
12K SLoC

Rust 10K SLoC // 0.1% comments Python 2.5K SLoC // 0.4% comments

包含 (DOS可执行文件, 185KB) src/win/windows-launcher/t64-arm.exe、(DOS可执行文件, 170KB) src/win/windows-launcher/w64-arm.exe、(DOS可执行文件, 98KB) src/win/windows-launcher/t32.exe、(DOS可执行文件, 110KB) src/win/windows-launcher/t64.exe、(DOS可执行文件, 92KB) src/win/windows-launcher/w32.exe、(DOS可执行文件, 105KB) src/win/windows-launcher/w64.exe

banner

RIP:Rust中的快速、简洁的

pip

实现

License Build Status Project Chat docs main

简介

RIP 是一个库,允许从 Rust 到虚拟环境解析和安装 Python PyPI 包。它基于我们构建 Rattler 的经验,旨在提供与 PyPI 相同的体验,而不是 Conda。

我应该用它来做什么?

与 Rattler 一样,RIP 应该快速且易于使用。这个库本身不是包管理器,但提供用于包管理器的基础设施。要查看示例,请查看我们的包管理器:pixi

RIP 基于非常出色的posy 的工作,我们尽量在可能的地方为作者提供信用。

展示

RIP 有一个非常不完整的类似于 pip 的二进制文件,可用于测试包安装。让我们解析和安装 flask Python 包。运行 cargo r install flask /tmp/flask 我们得到如下内容

rip-install

本示例展示了从 PyPI 下载和缓存元数据的过程。同时,使用我们增量 SAT 求解器(Resolvo)进行包解析:[Resolvo](https://github.com/mamba-org/resolvo "Resolvo")(更多信息见下文)。最后,解析完成后将包安装到虚拟环境中。我们本地缓存所有内容,以便重用 PyPi 元数据。

功能

以下是 RIP 当前功能的列表,其中最大的功能如下所示

  • 异步下载和积极缓存 PyPI 元数据。
  • 使用 Resolvo 解析 PyPI 包。
  • 安装 wheel 文件。
  • 支持 sdist 文件(必须目前符合 PEP 517PEP 518 标准)。
  • 本地构建 wheel 文件的缓存。

PyPI 生态系统中的更多复杂性需要实现,更多详情请参阅我们的 GitHub 问题和请求。

详细信息

解析

我们集成了独立的包装 SAT 求解器 Resolvo,用于解析 pypi 包。该求解器是增量式的,并在解析 SAT 问题期间添加包装元数据。可以通过 resolvo 功能标志启用此功能。

安装

我们对解析的包提供了非常简单的安装支持。这仅应用于测试目的,例如:使用 cargo r -- install flask /tmp/flask_env 创建一个虚拟环境并安装 flask 和它到其中。之后,你可以运行

  1. /tmp/flask_env/bin/python 在虚拟环境中启动 python。
  2. import flask #,这应该从虚拟环境中导入 flask 包。目前还没有检测 venv 中的现有包,尽管这应该相对简单。

贡献 😍

我们非常欢迎你做出贡献!有关更多信息,请参阅 CONTRIBUTING.md。对于问题、请求或随意的聊天,我们非常活跃在 discord 服务器上。你可以通过 此链接 加入我们的 discord 服务器。

依赖项

~27–61MB
~1M SLoC