国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

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

這篇具有很好參考價(jià)值的文章主要介紹了Rust 開發(fā)的高性能 Python 包管理工具,可替換 pip、pip-tools 和 virtualenv。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

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

作者:@charliermarsh

譯者:豌豆花下貓@Python貓

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

聲明:本翻譯是出于交流學(xué)習(xí)的目的,為便于閱讀,部分內(nèi)容略有改動(dòng)。轉(zhuǎn)載請(qǐng)保留作者信息。

摘要

uv 是一個(gè)極其快速的 Python 包安裝器和解析器,用 Rust 編寫,旨在作為 pip 和 pip-tools 工作流的替代品。

它代表了我們追求“Python 的 Cargo”的里程碑:一個(gè)全面、快速、可靠且易于使用的 Python 項(xiàng)目和包管理器。

作為此次發(fā)布的一部分,我們還將接管 Rye,這是 Armin Ronacher 開發(fā)的一個(gè)實(shí)驗(yàn)性 Python 打包工具。我們將維護(hù)它,直到我們將 uv 擴(kuò)展成統(tǒng)一的后繼項(xiàng)目,以實(shí)現(xiàn)我們對(duì) Python 打包的共同愿景。


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

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

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

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

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

產(chǎn)品原則

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

  1. 癡迷于高性能

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

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

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

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

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

  1. 簡(jiǎn)化的工具鏈

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

安裝使用

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

你可以通過(guò)我們的獨(dú)立安裝程序安裝 uv,或者從 PyPI 安裝。

使用 curl:

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

對(duì) Windows:

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

使用 pip 或 pipx:

pip install uv
pipx install uv

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

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

本文首發(fā)于 Python貓,博客:https://pythoncat.top/posts/2024-03-05-uv

即插即用的兼容性 API

這個(gè)初始版本主要實(shí)現(xiàn)了 uv 的pip 命令。對(duì)于使用過(guò) pip 和 pip-tools 的人來(lái)說(shuō),這將會(huì)很熟悉:

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

通過(guò)將這些“低級(jí)”命令放在uv pip下,我們?cè)?CLI 中預(yù)留了空間,用于我們打算在未來(lái)發(fā)布的更“有主見”的項(xiàng)目管理 API,它看起來(lái)將更像 Rye、Cargo 或 Poetry。(想象一下 uv runuv build 等等)

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

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

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

uv 的虛擬環(huán)境符合標(biāo)準(zhǔn),可以與其他工具互換使用——沒(méi)有鎖定機(jī)制或定制。

新功能

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

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

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

同樣,uv 目前還不支持生成與平臺(tái)無(wú)關(guān)的鎖定文件。這與 pip-tools 相符,但與 Poetry 和 PDM 不同,這使得 uv 更適合圍繞 pip 和 pip-tools 工作流構(gòu)建的項(xiàng)目。

對(duì)于那些深入打包生態(tài)系統(tǒng)的人來(lái)說(shuō),uv 還用 Rust 實(shí)現(xiàn)了符合標(biāo)準(zhǔn)的更多功能,例如 PEP 440(版本標(biāo)識(shí)符)、PEP 508(依賴項(xiàng)說(shuō)明符)、PEP 517(與構(gòu)建系統(tǒng)無(wú)關(guān)的構(gòu)建前端)、PEP 405(虛擬環(huán)境)等。

"Python 的 Cargo":uv 和 Rye

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

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

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

我們對(duì) Python 打包的愿景與 Rye 的愿景相去不遠(yuǎn),Rye 是由 Armin Ronacher 開發(fā)的一個(gè)實(shí)驗(yàn)性的項(xiàng)目與包管理工具。

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

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

在此之前,我們將維護(hù) Rye,將其遷移成在幕后使用 uv,寬泛地說(shuō),它將成為我們正在構(gòu)建的最終用戶體驗(yàn)的實(shí)驗(yàn)性測(cè)試床。

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

我們的路線圖

在此次發(fā)布之后,我們的首要任務(wù)是支撐好那些在考察 uv 的用戶,重點(diǎn)是提高跨平臺(tái)的兼容性、性能和穩(wěn)定性。

然后,我們將著手把 uv 擴(kuò)展為一個(gè)完整的 Python 項(xiàng)目與包的管理器:一個(gè)單一的二進(jìn)制文件,為你提供使用 Python 提高生產(chǎn)力所需的一切。

我們對(duì) uv 有一個(gè)雄心勃勃的路線圖。但在當(dāng)下,我認(rèn)為它對(duì) Python 來(lái)說(shuō),感覺像是提供了一種非常不同的體驗(yàn)。我希望你們能嘗試一下。

致謝

最后,我們要感謝所有直接或間接為 uv 的開發(fā)做出貢獻(xiàn)的人。其中最重要的是 pubgrub-rs 的維護(hù)者 Jacob Finkelman 和 Matthieu Pizenberg。uv 使用了 PubGrub 作為其底層版本解析器,我們感謝 Jacob 和 Matthieu 在過(guò)去對(duì) PubGrub 所做的工作,以及他們作為合作者對(duì)整個(gè)項(xiàng)目的關(guān)鍵助力。

我們還要感謝那些啟發(fā)了我們的打包項(xiàng)目,尤其是 Cargo,以及來(lái)自 JavaScript 生態(tài)的 Bun、Orogene 和 pnpm,以及來(lái)自 Python 生態(tài)的 Posy、Monotrail 和 Rye。特別感謝 Armin Ronacher 與我們合作完成這項(xiàng)工作。

最后,我們還要感謝 pip 的維護(hù)者們以及更廣泛的 PyPA 的成員,感謝他們?yōu)槭?Python 打包成為可能所做的所有工作。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-837880.html

到了這里,關(guān)于Rust 開發(fā)的高性能 Python 包管理工具,可替換 pip、pip-tools 和 virtualenv的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • MyPerf4J一個(gè)高性能、無(wú)侵入的Java性能監(jiān)控和統(tǒng)計(jì)工具,有點(diǎn)東西!

    MyPerf4J一個(gè)高性能、無(wú)侵入的Java性能監(jiān)控和統(tǒng)計(jì)工具,有點(diǎn)東西!

    背景 隨著所在公司的發(fā)展,應(yīng)用服務(wù)的規(guī)模不斷擴(kuò)大,原有的垂直應(yīng)用架構(gòu)已無(wú)法滿足產(chǎn)品的發(fā)展,幾十個(gè)工程師在一個(gè)項(xiàng)目里并行開發(fā)不同的功能,開發(fā)效率不斷降低。 于是公司開始全面推進(jìn)服務(wù)化進(jìn)程,把團(tuán)隊(duì)內(nèi)的大部分工程師主要精力全部都集中到服務(wù)化中。服務(wù)化

    2024年02月15日
    瀏覽(20)
  • 芯片設(shè)計(jì)重要工具—— IBM LSF 分布式高性能計(jì)算調(diào)度平臺(tái)

    IBM Spectrum? LSF? Suites 是面向分布式高性能計(jì)算 (HPC) 的工作負(fù)載管理平臺(tái)和作業(yè)調(diào)度程序?;?Terraform 的自動(dòng)化現(xiàn)已可用,該功能可在 IBM Cloud? 上為基于 IBM Spectrum LSF 的集群供應(yīng)和配置資源。 借助我們針對(duì)任務(wù)關(guān)鍵型 HPC 環(huán)境的集成解決方案,提高用戶生產(chǎn)力和硬件使用,

    2024年01月19日
    瀏覽(26)
  • Python asyncio高性能異步編程 詳解

    Python asyncio高性能異步編程 詳解

    目錄 一、協(xié)程 1.1、greenlet實(shí)現(xiàn)協(xié)程 1.2、yield 1.3、asyncio 1.4、async await 二、協(xié)程意義 三、異步編程 3.1、事件循環(huán) 3.2、快速上手 3.3、await 3.4、Task對(duì)象 3.5、asyncio.Future對(duì)象 3.5、concurrent.futures.Future對(duì)象 3.7、異步迭代器 3.8、異步上下文管理器 四、uvloop 五、實(shí)戰(zhàn)案例

    2024年02月20日
    瀏覽(33)
  • Apache SeaTunnel:新一代高性能、分布式、海量數(shù)據(jù)集成工具從入門到實(shí)踐

    Apache SeaTunnel:新一代高性能、分布式、海量數(shù)據(jù)集成工具從入門到實(shí)踐

    Apache SeaTunnel 原名 Waterdrop,在 2021 年 10 月更名為 SeaTunnel 并申請(qǐng)加入 Apache孵化器。目前 Apache SeaTunnel 已發(fā)布 40+個(gè)版本,并在大量企業(yè)生產(chǎn)實(shí)踐中使用,包括 J.P.Morgan、字節(jié)跳動(dòng)、Stey、中國(guó)移動(dòng)、富士康、騰訊云、國(guó)雙、中科大數(shù)據(jù)研究院、360、Shoppe、Bilibili、新浪、搜狗、唯

    2024年02月03日
    瀏覽(24)
  • springBoot + netty搭建高性能 websocket 服務(wù) & 性能測(cè)試(包含python 測(cè)試腳本)

    springBoot + netty搭建高性能 websocket 服務(wù) & 性能測(cè)試(包含python 測(cè)試腳本)

    1、如果我們的app類似于股票這種,數(shù)據(jù)很多很快,之前用的tomcat自帶的 websocket 又或者 spring-boot-starter-websocke 集成,但是性能在數(shù)據(jù)并發(fā)很大時(shí)就會(huì)存在問(wèn)題。 2、我前面寫的一篇關(guān)于 springBoot+webosket的,沒(méi)有使用netty的文章 springBoot使用webSocket的幾種方式以及在高并發(fā)出現(xiàn)的

    2024年02月04日
    瀏覽(25)
  • 高性能計(jì)算的矩陣乘法優(yōu)化 - Python + OpenMP實(shí)現(xiàn)

    高性能計(jì)算的矩陣乘法優(yōu)化 - Python + OpenMP實(shí)現(xiàn)

    關(guān)于上一節(jié)讀者某些疑問(wèn) :為什么你用進(jìn)程并行不是線程并行? 回答 :由于Python解釋器有GIL(全局解釋器鎖),在單進(jìn)程的解釋器上有線程安全鎖,也就是說(shuō)每次只能一個(gè)線程訪問(wèn)解釋器,因此Python在語(yǔ)法上的多線程(multithreads)實(shí)現(xiàn)是不會(huì)提高并行性能的。 這一點(diǎn)和C

    2024年02月15日
    瀏覽(33)
  • 高性能、可擴(kuò)展、支持二次開發(fā)的企業(yè)電子招標(biāo)采購(gòu)系統(tǒng)源碼

    高性能、可擴(kuò)展、支持二次開發(fā)的企業(yè)電子招標(biāo)采購(gòu)系統(tǒng)源碼

    在數(shù)字化時(shí)代,企業(yè)需要借助先進(jìn)的數(shù)字化技術(shù)來(lái)提高工程管理效率和質(zhì)量。招投標(biāo)管理系統(tǒng)作為企業(yè)內(nèi)部業(yè)務(wù)項(xiàng)目管理的重要應(yīng)用平臺(tái),涵蓋了門戶管理、立項(xiàng)管理、采購(gòu)項(xiàng)目管理、采購(gòu)公告管理、考核管理、報(bào)表管理、評(píng)審管理、企業(yè)管理、采購(gòu)管理和系統(tǒng)管理等多個(gè)方

    2024年01月23日
    瀏覽(104)
  • openpyxl被干掉?全新python高性能excel解析庫(kù)

    openpyxl被干掉?全新python高性能excel解析庫(kù)

    同事有一段 python 腳本,里面用 pandas 讀取一個(gè)幾十萬(wàn)行的 excel 文件,但是速度實(shí)在太慢了。問(wèn)我有沒(méi)有什么好辦法提升運(yùn)行速度。如果在幾個(gè)月以前,就實(shí)在沒(méi)有什么好辦法了。畢竟在 python 生態(tài)中,讀寫 excel 最后的倔強(qiáng)就是 openpyxl 了。你就別指望它能提速了。 現(xiàn)在可不一

    2024年02月22日
    瀏覽(27)
  • 高性能計(jì)算的矩陣乘法優(yōu)化 - Python +MPI的實(shí)現(xiàn)

    本次實(shí)驗(yàn)的目的是使用MPI的并行性來(lái)進(jìn)行矩陣乘法優(yōu)化,本人使用 Python 實(shí)現(xiàn) 實(shí)驗(yàn)硬件: CPU :AMD Ryzen 7 5800H(3.20 GHz) 內(nèi)存 :32GB (3200MHz) 要求 :使用一個(gè)矩陣,一個(gè)向量相乘,分別用單進(jìn)程和多進(jìn)程的mpi接口實(shí)現(xiàn)。 全局的規(guī)模參數(shù)是 Scale 數(shù)據(jù)示例 : 當(dāng) Scale=5 時(shí),數(shù)據(jù)示例如

    2023年04月22日
    瀏覽(32)
  • AIGC大模型時(shí)代下,該如何應(yīng)用高性能計(jì)算PC集群打造游戲開發(fā)新模式?

    AIGC大模型時(shí)代下,該如何應(yīng)用高性能計(jì)算PC集群打造游戲開發(fā)新模式?

    ACT | SIM | ETC | FTG | RAC AVG | RPG | FPS | MUG | PUZ ACT、SIM、ETC、FTG、RAC、RTS、STG、AVG、RPG、FPS、MUG、PUZ、SLG、SPG等游戲類型,需要高性能的計(jì)算機(jī)來(lái)支持運(yùn)行。為了滿足這些游戲的需求,國(guó)內(nèi)服務(wù)器廠商不斷推出新的產(chǎn)品,采用液冷散熱技術(shù),大模型構(gòu)建和PC集群一體機(jī)等技術(shù)來(lái)提高

    2024年02月09日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包