偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

用 Rust 開發(fā)的 Python 包管理工具,可替換 pip、pip-tools 和 virtualenv

開發(fā) 前端
uv 是一個極其快速的 Python 包安裝器和解析器,用 Rust 編寫,旨在作為 pip 和 pip-tools 工作流的替代品。它代表了我們追求“Python 的 Cargo”的里程碑:一個全面、快速、可靠且易于使用的 Python 項目和包管理器。

在 Astral,我們?yōu)?Python 生態(tài)系統(tǒng)構建高性能的開發(fā)工具。我們最出名的是 Ruff,一個極其快速的 Python linter 和格式化工具。(譯注:對 Ruff 的介紹 性能最快的代碼分析工具,Ruff 正在席卷 Python 圈!)

今天,我們發(fā)布了 Astral 工具鏈中的下一個工具:uv,一個用 Rust 開發(fā)的高性能的 Python 包解析器和安裝器。

圖片圖片

圖注:使用熱緩存來解析(左)和安裝(右)Trio 依賴項,以模擬重新創(chuàng)建虛擬環(huán)境或向現(xiàn)有項目添加依賴項

uv 旨在作為 pip、pip-tools 和 virtualenv 的直接替代品,現(xiàn)在就可以用于生產(chǎn)環(huán)境中那些圍繞這些工作流構建的項目。

產(chǎn)品原則

與 Ruff 一樣,uv 的實現(xiàn)也遵循我們的核心產(chǎn)品原則:

  1. 癡迷于高性能

在上述基準測試中,uv 在沒有緩存的情況下比 pip 和 pip-tools 快 8-10 倍,而在有熱緩存的情況下(例如,重新創(chuàng)建虛擬環(huán)境或更新依賴項),則快 80-115 倍。

uv 使用全局模塊緩存來避免重新下載和構建依賴項,并在支持的文件系統(tǒng)上利用 Copy-on-Write 和硬鏈接來最小化磁盤空間使用。

  1. 優(yōu)化以便于采用

盡管我們對 Python 打包的未來有著宏大的愿景,但 uv 的初始版本聚焦于支持我們 uv pip 接口背后的 pip 和 pip-tools,使其可以零配置地被現(xiàn)有項目所采用。

相似地,uv 可以“僅僅”當作一個解析器(uv pip compile 鎖定你的依賴項),“僅僅”當作一個虛擬環(huán)境創(chuàng)建器(uv venv),“僅僅”當作一個包安裝器(uv pip sync),等等。它既是統(tǒng)一的,又是模塊化的。

  1. 簡化的工具鏈

uv 作為一個單一的靜態(tài)二進制文件發(fā)布,能夠替代 pip、pip-tools 和 virtualenv。uv 沒有直接的 Python 依賴,因此你可以跟 Python 本身分別安裝,避免了在多個 Python 版本(例如,pip vs. pip3 vs. pip3.7)之間選擇 pip 安裝程序。

安裝使用

雖然 uv 將演變成一個完整的 Python 項目和包管理器(“Cargo for Python”),但像pip-tools 這樣較狹窄的聚焦范圍,讓我們得以解決構建此類工具所涉及的低級問題(如包安裝),同時立即提供有用的東西,最小化社區(qū)的使用障礙。

你可以通過我們的獨立安裝程序安裝 uv,或者從 PyPI 安裝。

使用 curl:

curl -LsSf https://astral.sh/uv/install.sh | sh

對 Windows:

powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

使用 pip 或 pipx:

pip install uv
pipx install uv

uv 能滿足你對現(xiàn)代 Python 打包工具的所有期望:可編輯安裝、Git 依賴項、URL 依賴項、本地依賴項、約束文件、源碼分發(fā)、自定義索引等,所有這些都設計成與你現(xiàn)有的工具無縫兼容。

uv 支持 Linux、Windows 和 macOS,并已針對公共的 PyPI 索引進行了大規(guī)模測試。

即插即用的兼容性 API

這個初始版本主要實現(xiàn)了 uv 的pip 命令。對于使用過 pip 和 pip-tools 的人來說,這將會很熟悉:

  • 類似于pip install,運行uv pip install ,可從命令行、requirements 文件或 pyproject.toml 來安裝 Python 依賴項
  • 類似于pip-compile,運行uv pip compile 來生成鎖定的 requirements.txt
  • 類似于pip-sync,運行uv pip sync 來同步帶有鎖定的 requirements.txt 的虛擬環(huán)境

通過將這些“低級”命令放在uv pip下,我們在 CLI 中預留了空間,用于我們打算在未來發(fā)布的更“有主見”的項目管理 API,它看起來將更像 Rye、Cargo 或 Poetry。(想象一下 uv run 、uv build 等等)

uv 也可以通過uv venv 作為虛擬環(huán)境管理器使用。它比python -m venv 快大約 80 倍,比virtualenv 快 7 倍,且不依賴于 Python。

圖片圖片

圖注:創(chuàng)建一個虛擬環(huán)境,有(左)和沒有(右)pip 及 setuptools 種子包

uv 的虛擬環(huán)境符合標準,可以與其他工具互換使用——沒有鎖定機制或定制。

新功能

從頭開始構建我們自己的包管理工具棧,這還為新功能開辟了空間。例如:

  • uv 支持替換解析策略。 默認情況下,uv 遵循標準的 Python 依賴解析策略,即優(yōu)先選擇每個包的最新兼容版本。但通過傳入--resolutinotallow=lowest,庫作者可以測試他們的包與依賴項的最低兼容版本。(這類似于 Go 的最小版本選擇。)
  • uv 允許針對任意 Python 目標版本進行解析。 pip 和 pip-tools 默認針對當前安裝的 Python 版本進行解析(例如,在 Python 3.12 下運行,將生成兼容于 Python 3.12 的解析),uv 支持--python-version 參數(shù),使你能夠在運行較新版本的情況下,生成兼容較低版本(例如 Python 3.7)的解析。
  • uv 允許依賴項“覆蓋”。 uv 通過覆蓋(-o overrides.txt)將 pip 的“約束”概念向前推了一步,允許用戶通過覆蓋包的聲明依賴項來引導解析器。覆蓋為用戶提供了一個逃生艙口,用于解決錯誤的上限和其他錯誤聲明的依賴項。

在當前形式下,uv 并不適合所有項目。pip 是一個成熟且穩(wěn)定的工具,支持非常廣泛的場景,并且專注于兼容性。雖然 uv 支持 pip 的大部分功能,但它缺乏對一些傳統(tǒng)特性的支持,比如 .egg 分發(fā)。

同樣,uv 目前還不支持生成與平臺無關的鎖定文件。這與 pip-tools 相符,但與 Poetry 和 PDM 不同,這使得 uv 更適合圍繞 pip 和 pip-tools 工作流構建的項目。

對于那些深入打包生態(tài)系統(tǒng)的人來說,uv 還用 Rust 實現(xiàn)了符合標準的更多功能,例如 PEP 440(版本標識符)、PEP 508(依賴項說明符)、PEP 517(與構建系統(tǒng)無關的構建前端)、PEP 405(虛擬環(huán)境)等。

"Python 的 Cargo":uv 和 Rye

uv 代表著我們追求 "Python 的 Cargo" 的一個中間里程碑:一個統(tǒng)一的 Python 包和項目管理器,它極其快速、可靠且易于使用。

想象一下:一個單一的二進制文件,它可為你安裝 Python,并為你提供使用 Python 所需的一切,不僅包括 pip、pip-tools 和 virtualenv,還有 pipx、tox、poetry、pyenv、ruff 等等。

使用 Python 工具鏈可能是一種低信心體驗:為新項目或現(xiàn)有項目搭建環(huán)境需要大量的工作,而且命令通常以令人費解的方式報錯。相比之下,在 Rust 生態(tài)中做事時,你信任工具會成功。Astral 工具鏈的目標是將 Python 從低信心體驗轉變?yōu)楦咝判捏w驗。

我們對 Python 打包的愿景與 Rye 的愿景相去不遠,Rye 是由 Armin Ronacher 開發(fā)的一個實驗性的項目與包管理工具。

在與 Armin 的交流中,我們清楚地認識到我們的愿景非常接近,但實現(xiàn)這些愿景需要在基礎工具上作大量投入。例如:構建這樣的工具需要一個非??焖俚摹⒍说蕉思傻?、跨平臺的解析器和安裝器。在 uv 里,我們已經(jīng)構建出了這樣的基礎工具。

我們認為這是一個難得的合作機會,可以避免 Python 生態(tài)破碎。因此,我們與 Armin 合作,很高興地接管了 Rye。 我們的目標是將 uv 發(fā)展成一個生產(chǎn)就緒的 "Python 的 Cargo",并在適當?shù)臅r候提供一個將 Rye 平滑遷移到 uv 的路徑。

在此之前,我們將維護 Rye,將其遷移成在幕后使用 uv,寬泛地說,它將成為我們正在構建的最終用戶體驗的實驗性測試床。

雖然合并項目帶來了一些挑戰(zhàn),但我們致力于在 Astral 的旗幟下構建一個單一的且統(tǒng)一的工具,并在我們發(fā)展 uv 成為一個合適且全面的繼任者的同時,支持現(xiàn)有的 Rye 用戶。

最近,我在 Python 潮流周刊 中分享了一個超級火爆的項目,這還不到一個月,它在 Github 上已經(jīng)拿下了 8K star 的亮眼成績,可見其受歡迎程度極高!國內還未見有更多消息,我趁著周末把一篇官方博客翻譯出來了,分享給大家。

作者:@charliermarsh

譯者:豌豆花下貓@Python貓

英文:uv: Python packaging in Rust (https://astral.sh/blog/uv)

聲明:本翻譯是出于交流學習的目的,為便于閱讀,部分內容略有改動。轉載請保留作者信息。

責任編輯:武曉燕 來源: Python貓
相關推薦

2025-05-20 11:54:01

Python管理uv

2022-08-03 08:02:46

PDM工具Python

2022-07-01 09:17:14

Pythonpoetry工具

2022-06-28 16:30:26

管理工具Python

2022-02-07 23:03:07

Python工具管理庫

2022-05-09 19:19:36

Pnpm管理工具

2022-04-02 09:56:44

pipPython

2023-12-06 10:18:35

Python開發(fā)

2025-05-09 08:55:00

Pythonpip包管理

2013-10-21 10:01:04

編碼工具擴展

2012-03-01 10:04:02

虛擬化云計算混合云

2010-02-23 17:21:06

Fedora yum

2012-02-22 13:36:43

云計算

2023-09-04 13:26:27

PHP開發(fā)工具

2011-08-12 10:38:09

MongoDB

2016-11-28 15:22:24

開源管理工具

2022-06-15 15:09:48

管理工具

2015-09-14 16:12:23

命令DNFLinux

2009-09-24 14:30:04

DotProject

2020-03-12 13:50:59

編程語言PythonJava
點贊
收藏

51CTO技術棧公眾號