大家好,我是 Ai 學習的老章
大家好,我是 Ai 學習的老章
好久沒看 Python,之前我最常用的包管理工具是 pip
但是貌似 uv 近些年也非常流行,很多項目默認使用 uv 管理環境,今天就借助 AI 學習一下
什么是uv
uv是一個用 Rust 編寫的、速度極快的 Python 包安裝器和解析器。它由ruff(一個同樣以速度著稱的 Python Linter)的開發團隊 Astral 公司推出。
你可以將uv理解為一個高性能的、旨在取代pip、pip-tools、venv和virtualenv等一系列工具的“瑞士軍刀”。它的目標是為 Python 開發者提供一個統一、快速、易用的包管理解決方案
uv的主要優勢可以總結為以下幾點:
1. 極致的速度
這是uv最引人注目的特點。在大多數情況下,uv的安裝和解析速度比pip快10-100 倍。這種速度提升主要源于:
Rust 語言編寫:
uv的底層由高性能的 Rust 語言構建,而非 Python,這使其在執行效率上具有天然優勢。高度并行化:
uv在進行網絡 I/O 操作(如下載包)時會盡可能地并行處理,而pip在這方面則更多是順序執行。先進的全局緩存:
uv維護一個全局的包緩存。一旦某個版本的包被下載過,任何項目再次需要它時,uv都能直接從本地緩存中獲取,避免了重復下載。這個緩存機制比pip的更高效,能跨項目共享。快速的依賴解析:
uv內置了一個非常快速的依賴關系解析器,能夠迅速解決復雜項目中的版本沖突問題。
一個典型的 Python 項目中,你可能需要多個工具來管理環境和依賴,uv將所有這些功能整合到了一個命令行工具中:
創建虛擬環境:
uv venv(等同于python -m venv .venv)安裝包:
uv pip install(用法與pip install兼容)編譯依賴文件:
uv pip compile pyproject.toml -o requirements.txt(等同于pip-compile)同步環境:
uv pip sync requirements.txt(確保虛擬環境與依賴文件嚴格一致)
這種“一體化”的設計大大簡化了開發者的工作流程。
3. “熱盤”式的安裝
由于其先進的緩存策略,uv在安裝依賴時,即使是對于一個全新的項目,只要其依賴的包在全局緩存中已存在,安裝過程也會快如閃電,因為它完全消除了網絡下載的耗時。這對于頻繁創建和銷毀環境的 CI/CD 流程來說,是一個巨大的福音。
4. 易于安裝和使用
uv本身是一個獨立的二進制文件,安裝非常簡單,與你的 Python 版本或項目環境解耦。你可以通過pip,brew,curl等多種方式快速安裝,并在任何地方使用它。
為了幫助你快速上手uv,https://mathspp.com/blog/uv-cheatsheet 整理了一份詳細的速查表(Cheatsheet),涵蓋了從項目初始化到依賴管理的各種常用命令。無論你是新手還是希望提高效率的老手,這張表都能為你提供極大的便利。
uv速查表 創建項目
uv init 在當前目錄初始化項目
uv init myproj 在目錄 myproj 中初始化項目 myproj
uv init --app --package ... 初始化可打包應用(如 CLI、Web 應用等)
uv init --lib --package ... 初始化一個可打包的庫(可供導入的代碼)
uv init --python 3.X ...1 為項目使用 Python 3.X
管理項目依賴
uv add requests 添加 requests 作為依賴項
uv add A B C 添加 A、B 和 C 作為依賴項
uv add -r requirements.txt 從文件 requirements.txt 中添加依賴項
uv add --dev pytest 將 pytest 添加為開發依賴項
uv run pytest 運行項目中安裝的 pytest 可執行文件
uv remove requests 移除 requests 依賴項
uv remove A B C 移除 A、B、C 及其傳遞依賴項
uv tree 查看項目依賴關系樹
uv lock --upgrade 升級依賴版本
項目生命周期管理
uv build 構建可打包項目
uv publish 將可打包項目發布到 PyPI
uv version 檢查項目版本
uv version --bump major 升級主版本號(例如:0.3.2 -> 1.0.0)
uv version --bump minor --bump beta 升級次版本號至測試版(例如:1.0.0 -> 1.1.0b1 或 1.1.0b1 -> 1.1.0b2)
uv version --bump rc 升級版本至候選發布版(例如:1.1.0b1 -> 1.1.0rc1 或 1.1.0rc1 -> 1.1.0rc2)
uv version --bump stable 轉為穩定版本(例如:1.1.0rc1 -> 1.1.0)
管理工具 ??
uv tool run pytest 在隔離環境中運行 pytest
uv tool run textual-demo --from textual 從 textual 包中運行命令 textual-demo
uvx ... uv tool run ... 的別名
uv tool install ruff 在隔離環境中安裝 ruff 但使其全局可用
uv tool install --with dep ... 安裝指定工具及其額外依賴項(例如安裝工具及其插件)
uv tool list 列出所有已安裝工具
uv tool upgrade ruff 升級 ruff 工具
uv tool upgrade --all 升級所有工具
uv tool uninstall ruff 卸載 ruff
uv tool install -e .2 以可編輯模式安裝當前可打包項目
使用腳本
uv init --script myscript.py 初始化腳本 myscript.py
uv init --script myscript.py --python 3.X 初始化腳本 myscript.py 并將其固定為 3.X 版本
uv add click --script myscript.py 將依賴項 click 添加到腳本中
uv remove click --script myscript.py 從腳本中移除依賴項 click
uv run myscript.py 運行腳本 myscript.py
uv run --python 3.X myscript.py 使用指定的 Python 版本運行腳本
uv run --with click myscript.py 運行腳本時附帶 click 依賴項 使腳本可執行并在腳本首行添加 uv shebang:#!/usr/bin/env -S uv run。這樣您可以直接運行 ./myscript.py,而無需輸入 uv run myscript.py。
管理 Python 版本
uv python list 列出已安裝及可安裝的 Python 版本
uv python install 3.X 安裝 Python 3.X
uv python uninstall 3.X 卸載 Python 3.X
uv run python 運行默認 Python 版本
uv run --python 3.X python 運行 Python 3.X
uv python upgrade 升級 Python 版本
uv python pin 3.X 固定使用特定 Python 版本
老派開發者不愿學習新技巧
uv venv path/to/.venv 在 path/to/.venv 路徑創建虛擬環境
uv pip pip 的功能接口搭配 uv 的速度 ??
雜項命令 ?
uv format 使用 Ruff 格式化代碼
元命令
uv help cmd 查看命令 cmd 的幫助信息
uv self update 更新 uv 版本
uv self version 檢查 uv 版本
覺得這張uv速查表還不夠?別擔心,我個人整理了一份史上最全的速查表合集,總共371張,內容涵蓋了 AI、ChatGPT、Python、R、數據科學、深度學習、機器學習、SQL、Pandas、Scikit-learn 等幾乎所有你需要的領域。
無論你是數據科學家、開發者,還是正在學習 AI 的學生,這份資源都將是你的“武功秘籍”。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.