搜尋
首頁後端開發Python教學uv 簡介:下一代 Python 套件管理器

Python 的發展與套件管理的進步密切相關,從手動安裝到 pip 和 Poetry 等工具。然而,隨著專案變得越來越複雜,傳統工具往往在速度和效率上出現不足。

uv 是一個用 Rust 建構的尖端 Python 套件和專案管理器,旨在改變這一現狀。 uv 結合了 pip、poetry 和 virtualenv 等工具的功能,簡化了依賴管理、腳本執行和專案建置等任務,所有這些都具有卓越的效能。它與 pip 命令無縫兼容,無需額外的學習曲線。

在本教程中,我們將探索如何安裝 uv 並充分利用其功能。從設定專案和管理依賴項到執行腳本和利用其增強的 pip 介面。

入門

目錄

  • 點限制
  • 什麼是紫外線
  • 紫外線的主要特徵
  • 基準
  • 安裝
  • 建立虛擬環境
  • 使用 uv 建構 Flask 應用
  • 使用 uv 安裝 python
  • 工具
  • 備忘單
  • 當前限制

點的限制

Pip 是一個廣泛使用的 Python 編寫的套件管理系統,旨在安裝和管理軟體包。然而,儘管它很受歡迎,但它經常被批評為最慢的 Python 套件管理工具之一。關於「pip install 速度慢」的投訴非常常見,以至於經常出現在開發者論壇和主題中。

pip 的一個顯著缺點是它容易受到依賴氣味的影響,當依賴配置文件編寫或維護不當時就會出現這種情況。這些問題可能會導致嚴重的後果,例如專案的複雜性增加和可維護性降低。

pip 的另一個限制是它在恢復運行時環境時無法一致地準確地匹配 Python 程式碼。這種不匹配可能會導致依賴推斷的成功率較低,從而使可靠地重新創建專案環境變得困難。

什麼是紫外線

uv 是一個現代的、高效能的 Python 套件管理器,由 ruff 的創建者開發並用 Rust 編寫。它被設計為 pip 和 pip-tools 的直接替代品,提供卓越的速度以及與現有工具的兼容性。

主要功能包括支援可編輯安裝、Git 和 URL 依賴項、約束檔案、自訂索引等。 uv 符合標準的虛擬環境可與其他工具無縫協作,避免鎖定或自訂。它是跨平台的,支援 Linux、Windows 和 macOS,並且已經針對 PyPI 索引進行了廣泛的測試。

uv 專注於簡單性、速度和可靠性,解決了常見的開發人員痛點,如安裝緩慢、版本衝突和複雜的依賴管理,為現代 Python 開發提供了直觀的解決方案。

紫外線的主要特點

  • ⚖️ 直接替換:無縫替換 pip、pip-tools、virtualenv 等工具,完全相容。
  • ⚡ 極速:比 pip、pip-compile 和 pip-sync 等傳統工具快 10-100 倍。
  • ?磁碟空間效率高:利用全域快取進行重複資料刪除,節省儲存空間。
  • ?靈活安裝:可透過curl、pip或pipx安裝,無需Rust或Python。
  • ?經過徹底測試:透過前 10,000 個 PyPI 套件大規模驗證效能。
  • ?️ 跨平台支援:完全相容於 macOS、Linux 和 Windows。
  • ?高階依賴管理:功能包括依賴版本覆蓋、替代解決策略和衝突追蹤解析器。
  • ⁉️ 清除錯誤訊息:一流的錯誤處理確保開發人員能夠有效解決衝突。
  • ?現代 Python 功能:支援可編輯安裝、Git 依賴項、直接 URL、本機依賴項、約束檔等。
  • ?統一工具:將 pip、pipx、poetry、pyenv、twine 等工具的功能組合到一個解決方案中。
  • ?️ 應用程式和腳本管理:安裝和管理 Python 版本,使用內聯依賴元資料運行腳本,並支援全面的專案工作流程。
  • ?️ 通用鎖定檔案:透過一致且可移植的鎖定檔案簡化專案管理。
  • ?工作區支援:透過 Cargo 式工作區管理處理可擴充專案。

基準測試

Introducing uv: Next-Gen Python Package Manager
資料來源:https://blog.kusho.ai/uv-pip-killer-or-yet-another-package-manager
使用熱緩存解析(左)和安裝(右)依賴項,模擬重新建立虛擬環境或向現有專案新增依賴項的過程。

Introducing uv: Next-Gen Python Package Manager
資料來源:https://blog.kusho.ai/uv-pip-killer-or-yet-another-package-manager
使用冷緩存解析(左)和安裝(右)依賴項模擬乾淨環境中的執行。在沒有快取的情況下,uv 比 pip 和 pip-tools 快 8-10 倍,而在使用熱快取的情況下,它的速度可以快 80-115 倍。

Introducing uv: Next-Gen Python Package Manager
資料來源:https://blog.kusho.ai/uv-pip-killer-or-yet-another-package-manager
使用(左)和不使用(右)種子包(例如 pip 和 setuptools)建立虛擬環境。 uv 比 python -m venv 快大約 80 倍,比 virtualenv 快 7 倍,同時獨立於 Python 運行。

安裝

安裝 uv 快速又簡單。您可以選擇獨立安裝程式或直接從 PyPI 安裝。

# On macOS and Linux.
curl -LsSf https://astral.sh/uv/install.sh | sh

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

# With pip.
pip install uv

# With pipx.
pipx install uv

# With Homebrew.
brew install uv

# With Pacman.
pacman -S uv

Introducing uv: Next-Gen Python Package Manager
Introducing uv: Next-Gen Python Package Manager

在使用uv之前,我們必須將uv路徑加入環境變數。
對於 Linux 和 macOS,請在終端機中使用以下命令修改 PATH 環境變數:

export PATH="$HOME/.local/bin:$PATH"

對於 Windows,要將目錄新增至 Windows 上的使用者和系統的 PATH 環境變數中,請在搜尋面板中搜尋環境變數。在“使用者變數”/“系統變數”下,選擇“路徑”變量,按一下“編輯”,然後按一下“新建”並新增所需的路徑。

%USERPROFILE%\.local\bin

Introducing uv: Next-Gen Python Package Manager
安裝完成後,在終端機執行uv命令,以驗證是否安裝正確。

Introducing uv: Next-Gen Python Package Manager

建立虛擬環境

使用 uv 建立虛擬環境簡單明了。使用以下命令以及您所需的環境名稱來建立它。

uv venv
  • 執行以下指令啟動虛擬環境。
# On macOS and Linux.
source .venv/bin/activate

# On Windows.
.venv\Scripts\activate

安裝軟體包

將軟體包安裝到虛擬環境中遵循熟悉的過程。下面給出各種安裝方法

uv pip install flask                # Install Flask.
uv pip install -r requirements.txt  # Install from a requirements.txt file.
uv pip install -e .                 # Install current project in editable mode.
uv pip install "package @ ."        # Install current project from disk
uv pip install "flask[dotenv]"      # Install Flask with "dotenv" extra.

Introducing uv: Next-Gen Python Package Manager

要將鎖定的依賴項與虛擬環境同步,請使用以下命令:

uv pip sync requirements.txt  # Install dependencies from a requirements.txt file.

uv 支援與現有工具類似的各種命令列參數,包括 -rrequirements.txt、-cconstraints.txt、-e .、--index-url 等。

使用 uv 構建燒瓶應用程式

讓我們用 uv 來探索一些與項目相關的指令。首先初始化一個名為「sample-project」的 Python 專案。

# On macOS and Linux.
curl -LsSf https://astral.sh/uv/install.sh | sh

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

# With pip.
pip install uv

# With pipx.
pipx install uv

# With Homebrew.
brew install uv

# With Pacman.
pacman -S uv

導航到範例專案目錄。 uv 使用 app.py、requirements.txt、README.md 等基本檔案初始化專案。

Introducing uv: Next-Gen Python Package Manager

使用run指令執行範例Python檔。此過程首先建立虛擬環境資料夾,然後執行 Python 檔案。

export PATH="$HOME/.local/bin:$PATH"

Introducing uv: Next-Gen Python Package Manager

安裝燒瓶

將 Flask 加入您的專案依賴項。

%USERPROFILE%\.local\bin

創建 Flask 應用程式

新建一個並編寫以下程式碼。

uv venv

運行應用程式

使用 uv run 指令來執行應用程式。

# On macOS and Linux.
source .venv/bin/activate

# On Windows.
.venv\Scripts\activate

開啟瀏覽器或使用curl或Postman等工具發送GET請求。

Introducing uv: Next-Gen Python Package Manager
Introducing uv: Next-Gen Python Package Manager

使用 uv 安裝 python

使用 uv 安裝 Python 是可選的,因為它可以與現有的 Python 安裝無縫協作。但是,如果首選透過 uv 安裝 Python,則可以使用簡單的命令來完成:

uv pip install flask                # Install Flask.
uv pip install -r requirements.txt  # Install from a requirements.txt file.
uv pip install -e .                 # Install current project in editable mode.
uv pip install "package @ ."        # Install current project from disk
uv pip install "flask[dotenv]"      # Install Flask with "dotenv" extra.

Introducing uv: Next-Gen Python Package Manager

與傳統方法相比,這種方法通常更方便、更可靠,因為它避免了管理儲存庫或下載安裝程式的需要。只需執行命令,設定即可使用。

工具

CLI 工具可以透過 uv 指令安裝和使用。例如,可以安裝 Huggingface_hub 工具來將檔案拉取和推送到 Hugging Face 儲存庫。

  • 使用以下指令使用uv安裝huggingface_hub。
uv pip sync requirements.txt  # Install dependencies from a requirements.txt file.

Introducing uv: Next-Gen Python Package Manager

  • 以下指令顯示所有已安裝的工具:
uv init sample-project

Introducing uv: Next-Gen Python Package Manager

備忘錄

這是使用 uv 執行常見操作的快速備忘單:

Introducing uv: Next-Gen Python Package Manager

目前的限制

儘管 uv 為 Python 套件管理提供了快速且有效率的解決方案,但它也有一些限制:

  • 不完整的 pip 相容性:雖然 uv 支援 pip 介面的很大一部分,但它尚未覆蓋整個功能集。其中一些差異是有意的設計選擇,而另一些則源於紫外線仍處於發展的早期階段。如需詳細比較,請參閱 pip 相容性指南。
  • 平台特定的requirements.txt:與pip-compile一樣,uv產生特定於平台的requirements.txt檔案。這與 Poetry 和 PDM 等工具形成對比,後者創建與平台無關的 Poetry.lock 和 pdm.lock 檔案。因此,uv 的requirements.txt 檔案可能缺乏跨不同平台和Python 版本的可移植性。

感謝您閱讀這篇文章! !

感謝 Gowri M Bhatt 審閱內容。

如果您喜歡這篇文章,請點擊心形按鈕♥並分享以幫助其他人找到它!

資源

uv - 一個非常快速的 Python 套件和專案管理器,用 Rust 編寫 | docs.astral.sh

以上是uv 簡介:下一代 Python 套件管理器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
為什麼數組通常比存儲數值數據列表更高?為什麼數組通常比存儲數值數據列表更高?May 05, 2025 am 12:15 AM

ArraySareAryallyMoremory-Moremory-forigationDataDatueTotheIrfixed-SizenatureAntatureAntatureAndirectMemoryAccess.1)arraysStorelelementsInAcontiguxufulock,ReducingOveringOverheadHeadefromenterSormetormetAdata.2)列表,通常

如何將Python列表轉換為Python陣列?如何將Python列表轉換為Python陣列?May 05, 2025 am 12:10 AM

ToconvertaPythonlisttoanarray,usethearraymodule:1)Importthearraymodule,2)Createalist,3)Usearray(typecode,list)toconvertit,specifyingthetypecodelike'i'forintegers.Thisconversionoptimizesmemoryusageforhomogeneousdata,enhancingperformanceinnumericalcomp

您可以將不同的數據類型存儲在同一Python列表中嗎?舉一個例子。您可以將不同的數據類型存儲在同一Python列表中嗎?舉一個例子。May 05, 2025 am 12:10 AM

Python列表可以存儲不同類型的數據。示例列表包含整數、字符串、浮點數、布爾值、嵌套列表和字典。列表的靈活性在數據處理和原型設計中很有價值,但需謹慎使用以確保代碼的可讀性和可維護性。

Python中的數組和列表之間有什麼區別?Python中的數組和列表之間有什麼區別?May 05, 2025 am 12:06 AM

Pythondoesnothavebuilt-inarrays;usethearraymoduleformemory-efficienthomogeneousdatastorage,whilelistsareversatileformixeddatatypes.Arraysareefficientforlargedatasetsofthesametype,whereaslistsofferflexibilityandareeasiertouseformixedorsmallerdatasets.

通常使用哪種模塊在Python中創建數組?通常使用哪種模塊在Python中創建數組?May 05, 2025 am 12:02 AM

theSostCommonlyusedModuleForCreatingArraysInpyThonisnumpy.1)NumpyProvidEseffitedToolsForarrayOperations,Idealfornumericaldata.2)arraysCanbeCreatedDusingsnp.Array()for1dand2Structures.3)

您如何將元素附加到Python列表中?您如何將元素附加到Python列表中?May 04, 2025 am 12:17 AM

toAppendElementStoApythonList,usetheappend()方法forsingleements,Extend()formultiplelements,andinsert()forspecificpositions.1)useeAppend()foraddingoneOnelementAttheend.2)useextendTheEnd.2)useextendexendExendEnd(

您如何創建Python列表?舉一個例子。您如何創建Python列表?舉一個例子。May 04, 2025 am 12:16 AM

TocreateaPythonlist,usesquarebrackets[]andseparateitemswithcommas.1)Listsaredynamicandcanholdmixeddatatypes.2)Useappend(),remove(),andslicingformanipulation.3)Listcomprehensionsareefficientforcreatinglists.4)Becautiouswithlistreferences;usecopy()orsl

討論有效存儲和數值數據的處理至關重要的實際用例。討論有效存儲和數值數據的處理至關重要的實際用例。May 04, 2025 am 12:11 AM

金融、科研、医疗和AI等领域中,高效存储和处理数值数据至关重要。1)在金融中,使用内存映射文件和NumPy库可显著提升数据处理速度。2)科研领域,HDF5文件优化数据存储和检索。3)医疗中,数据库优化技术如索引和分区提高数据查询性能。4)AI中,数据分片和分布式训练加速模型训练。通过选择适当的工具和技术,并权衡存储与处理速度之间的trade-off,可以显著提升系统性能和可扩展性。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具