Python 封裝現在很棒:「uv」就是您所需要的

王林
發布: 2024-08-11 12:49:01
原創
839 人瀏覽過

Python Packaging is Great Now: `uv` is all you need

這篇文章的標題是對 Glyph 的 Python Packaging is Good Now 的引用。我認為可以肯定地說,在這8年裡,我們已經從「好」變成了「偉大」。繼續閱讀我的推理。

是什麼讓 Python 打包對於初學者來說變得困難

我認為Python打包的兩個主要困難是

    引導,即如何開始!
  • 激活,即 Python 中的 venvs 如何工作(請參閱我的 Mastodon 線程,它很難解釋!)
自舉是一個經常被忽略的問題。我們應該告訴人們從 https://python.org 安裝 Python 嗎? Anaconda 分佈?我們如何阻止人們使用他們的系統套件管理器並冒破壞一切的風險?

並且不要忘記整個虛擬環境生命週期。作為一個長期的 Python 用戶,我對它變得麻木了,這太瘋狂了,但每次我必須解釋它時,我看到我的學生的臉,我想「這不好」。

當然,還有其他問題,例如如何建置和發布可分發包。但我認為這些不會影響大多數 Python

初學者。另外,這些問題也正在解決。繼續閱讀。

輸入紫外線

2月15日,Astral發布了uv,我立即跳船。作為我工作的一部分,我通常必須安裝許多可能存在衝突的依賴項,而 uv 立即緩解了我的壓力。

但有趣的是,現在 uv 已經遠遠超出了最初的「更快的 pip」階段,它正在履行其「成為快速、可靠且易於使用的綜合性 Python 專案和套件管理器」的承諾。

回到我一開始提到的引導和啟動問題,uv 是如何解決的呢?考慮一下:

    uv 不依賴 Python 本身。預先編譯的獨立二進位檔案可以輕鬆安裝在 Linux、macOS 和 Windows 上。
  • uv python 管理Python版本!無需求助於特定於作業系統的機制,如 pyenv、deadsnakes,或重量級工具,如 conda。
  • uv 工具在集中式環境中管理工具!不再需要 pipx 或淡入淡出。
  • uv init 使用孵化作為構建後端創建一個準系統 pyproject.toml 和一個帶有空自述文件和虛擬模組的工作 src 佈局。
    • 如果您需要更複雜的東西,您可以隨時使用影印機或餅乾切割機以及一些更複雜的模板。
  • uv add 將依賴項新增至 pyproject.toml,
  • 建立一個 venv(如果不存在),並安裝它們!
  • uv lock 會建立一個包含所有依賴項的鎖定文件,然後您可以在 uv 同步中使用該文件。
    • 如果你想要一個好的舊的requirements.txt,uv pip編譯可以為你做到,就像pip-tools一樣!
  • uv run 再次執行腳本和指令
  • ,無需明確啟動環境
本質上,這個:


雷雷

因此,對於「我如何開始在我的電腦上學習Python」這個問題,現在你可以普遍回答:「安裝uv」。

一些思考

關於虛擬環境的話題,我基本上同意 Armin 的說法

npm 沒有任何相當於「活化」的東西就消失了,我認為未來的 Python 生態系統也將不再在 virtualenv 活化中找到太多用途。

我還注意到 uv init 選擇了孵化。我一直對 PDM 有一點偏愛,但我認為這可能是個不歸路。

Leah 和貢獻者花了很多功夫才為 PyOpenSci 打包指南繪製了這個決策圖。但事實是,現在有一個基準

,人們可以在有更具體的需求時進行更改(例如,具有 Meson 或 scikit 構建能力的構建後端),這再次提供了更好的開發人員體驗。論康達

conda 與 pip 的主題是另一個常見的混淆來源。我從第一天起就是 conda 用戶和粉絲,它有效地使 Python 免於死亡,當時在 Windows 上安裝東西非常困難。

在接下來的幾年裡,我經常參考 Jake VanderPlas 解釋這些差異的舊部落格文章,但現在看來已經是失敗的原因了。

pip 和 conda 之間的互通性問題從未完全解決,雖然我認為 Pixi 人員做得非常出色,但我認為從長遠來看 uv 將獲勝。

我完全承認 conda 套件更好地圍繞非 Python 程式碼的概念構建,而當前「PyPI 上的胖輪子」的世界顯然是一個次優的解決方案。但整個生態系統已經朝這個方向發展:大多數軟體包現在都為各種平台發布了預先編譯的輪子。

換句話說:conda 在 2024 年可能不會像 2014 年那樣有用,也許是時候停止向初學者教授它並認為它是一個高級工具了。

結論

現在有點為時過早,因為其中一些 uv 命令仍處於實驗階段,將來可能會發展。但有史以來第一次,我清楚地看到一個工作流程工具,它符合標準、全面、無引導問題、經過精心設計,而且可以獲勝.

這就是許多 Python 打包評論家一直想要的,對吧?不必從許多不同的工具中進行選擇。但我認為 uv 遠遠超出了這一點,它解決了其他開發者體驗問題,對此我感到高興和感激。

我正在有效地使用紫外線來完成所有事情,而且我不會回頭。我會繼續向大家推薦這個工具,繼續談論它,並希望它變得更廣泛。

以上是Python 封裝現在很棒:「uv」就是您所需要的的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!