uv使用指南

🚀 Python 打包工具 UV 使用指南

UV 是一個用 Rust 編寫的極速 Python 包管理器和解析器,旨在成為 pip、pip-tools、virtualenv 等工具的單一替代方案。

📋 目錄

  1. 核心概念與設計哲學
  2. 安裝與配置
  3. 基礎使用方法
  4. 項目管理與工作流
  5. 高級功能與技巧
  6. 與其他工具集成
  7. 性能優化與最佳實踐
  8. 故障排除與調試
  9. 學習資源與進階

🧠 核心概念與設計哲學

設計目標

  • 極速性能: 比傳統工具快 10-100 倍
  • 一體化解決方案: 替代 pip、pip-tools、virtualenv、pipenv 等
  • 現代標準支持: 優先支持 pyproject.toml 和 PEP 標準
  • 可靠性: 基于 Rust 的內存安全性和強大的依賴解析器

核心組件

  • 包安裝器: 替代 pip 的功能
  • 虛擬環境管理器: 替代 virtualenv 的功能
  • 依賴解析器: 基于 PubGrub 算法的高效解析
  • 項目初始化器: 創建新項目結構

🔧 安裝與配置

多種安裝方式

# Windows PowerShell (推薦)
powershell -ExecutionPolicy Bypass -c "irm https://astral.sh/uv/install.ps1 | iex"# Linux/macOS
curl -LsSf https://astral.sh/uv/install.sh | sh# 使用 pip (已安裝Python的情況下)
pip install uv# 使用 pipx
pipx install uv# 使用 Homebrew (macOS)
brew install uv# 手動安裝 (從發布頁面下載)
# 訪問: https://github.com/astral-sh/uv/releases

配置設置

# 查看所有配置選項
uv config list# 設置全局Python版本
uv config set default-python-version 3.11# 配置鏡像源 (國內用戶推薦)
uv config set index-url https://pypi.tuna.tsinghua.edu.cn/simple/# 或者通過環境變量
export UV_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple/

配置文件位置

  • 全局配置: ~/.config/uv/uv.toml (Linux/macOS) 或 %APPDATA%\uv\uv.toml (Windows)
  • 項目級配置: 項目目錄中的 uv.toml

📖 基礎使用方法

虛擬環境管理

# 創建虛擬環境
uv venv .venv# 創建指定Python版本的虛擬環境
uv venv --python 3.11 .venv# 激活虛擬環境 (Windows)
.\.venv\Scripts\activate# 激活虛擬環境 (Unix/macOS)
source .venv/bin/activate# 列出可用Python版本
uv python list# 安裝特定Python版本
uv python install 3.11

包管理操作

# 安裝單個包
uv pip install requests# 安裝多個包
uv pip install requests pandas numpy# 安裝指定版本的包
uv pip install "django==4.2.0"# 從requirements.txt安裝
uv pip install -r requirements.txt# 列出已安裝的包
uv pip list# 卸載包
uv pip uninstall package-name# 更新包
uv pip install --upgrade package-name# 查看包信息
uv pip show package-name

依賴管理

# 生成requirements.txt
uv pip freeze > requirements.txt# 安裝開發依賴
uv pip install --dev black isort flake8# 根據pyproject.toml安裝依賴
uv pip install -e .

🏗? 項目管理與工作流

項目初始化與設置

# 創建新項目
uv init my-project
cd my-project# 添加生產依賴
uv add requests# 添加開發依賴
uv add --dev black# 安裝所有依賴 (根據pyproject.toml)
uv sync# 安裝生產依賴 only
uv sync --production# 更新依賴鎖文件
uv sync --upgrade

依賴解析與鎖文件

# 檢查依賴更新
uv pip list --outdated# 更新所有依賴
uv pip install --upgrade --all# 生成精確的鎖文件
uv sync --locked# 驗證當前依賴與鎖文件一致性
uv sync --check

項目結構示例

my-project/
├── pyproject.toml    # 項目配置和依賴聲明
├── uv.lock           # 依賴鎖文件 (自動生成)
├── src/
│   └── my_project/
│       ├── __init__.py
│       └── module.py
├── tests/
│   └── test_module.py
└── .venv/            # 虛擬環境 (可選)

🚀 高級功能與技巧

緩存與性能優化

# 清理緩存
uv cache clean# 查看緩存信息
uv cache info# 預下載包到緩存 (用于CI環境)
uv pip download --only-binary=:all: --dest ./cache-dir -r requirements.txt

平臺特定依賴

# 在pyproject.toml中指定平臺特定依賴
[project]
dependencies = ["requests","cffi; platform_machine == 'x86_64'",
]# 或者使用環境標記
[project.optional-dependencies]
windows = ["pywin32"]
linux = ["dbus-python"]

自定義索引源

# 添加額外包索引源
uv config set extra-index-urls '["https://pypi.company.com/simple"]'# 或使用TOML配置
[[index]]
url = "https://pypi.company.com/simple/"
name = "company"
priority = 1

二進制包控制

# 強制使用源碼編譯
uv pip install --no-binary :all: package-name# 強制使用預編譯二進制包
uv pip install --only-binary :all: package-name# 指定特定包的二進制策略
uv pip install --only-binary=:numpy: --no-binary=:pandas: .

🔗 與其他工具集成

與PDM/Poetry項目兼容

# 安裝PDM項目
uv pip install -e . --no-deps
uv sync --dev# 安裝Poetry項目
uv pip install -e .
uv sync --dev --extras all

CI/CD集成示例

# GitHub Actions 示例
name: CIon: [push, pull_request]jobs:test:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v4- uses: astral-sh/setup-uv@v3with:python-version: "3.11"- run: uv sync --dev- run: uv run pytest

預發布環境配置

# 安裝預發布版本
uv pip install --pre package-name# 允許安裝alpha/beta版本
uv pip install --upgrade --pre package-name

? 性能優化與最佳實踐

最佳實踐指南

  1. 利用緩存機制: UV 具有高效的緩存系統,避免重復下載
  2. 使用鎖文件: 始終使用 uv.lock 確保環境一致性
  3. 合理配置鏡像源: 國內用戶配置國內鏡像大幅提升速度
  4. 按需安裝二進制包: 根據需要選擇源碼編譯或預編譯二進制包

性能對比技巧

# 對比UV和pip的性能
time uv pip install -r requirements.txt
time pip install -r requirements.txt# 清除緩存后測試
uv cache clean
pip cache purge

大型項目優化

# 分階段安裝依賴 (Dockerfile中特別有用)
# 第一階段: 安裝構建依賴
uv sync --dev --production# 第二階段: 僅安裝運行依賴
uv sync --production

🐛 故障排除與調試

常見問題解決

# 詳細日志輸出
uv pip install -v package-name# 更詳細的調試信息
uv pip install -vv package-name# 顯示依賴解析樹
uv pip install --dry-run --report - > report.json# 檢查環境問題
uv debug --verbose

依賴沖突解決

# 查看依賴沖突信息
uv pip check# 強制重新安裝所有依賴
uv pip install --force-reinstall -r requirements.txt# 忽略已安裝的包
uv pip install --ignore-installed package-name

網絡問題處理

# 設置超時時間
uv pip install --timeout 60 package-name# 設置重試次數
uv pip install --retries 3 package-name# 使用代理
export UV_HTTP_PROXY=http://proxy.example.com:8080
export UV_HTTPS_PROXY=http://proxy.example.com:8080

📚 學習資源與進階

官方資源

  • 官方文檔
  • GitHub 倉庫
  • Discord 社區

進階主題

  1. 自定義解析策略: 學習如何配置依賴解析行為
  2. 插件開發: 了解如何為 UV 開發擴展功能
  3. 源碼編譯: 從源碼編譯 UV 以獲得最新特性
  4. 集成測試: 在復雜項目中實施 UV 的測試策略

遷移指南

# 從 requirements.txt 遷移到 pyproject.toml
uv init
uv add -r requirements.txt# 從 Pipenv 遷移
uv pip install -r Pipfile --dev# 從 Poetry 遷移
uv pip install -r pyproject.toml --dev

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/921645.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/921645.shtml
英文地址,請注明出處:http://en.pswp.cn/news/921645.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

安卓學習 之 圖片控件和圖片按鈕

今天學習的是ImageView 和 ImageButton這兩個控件還是比較簡單的:先來看看最后的樣式圖片吧:從圖片中可以看到ImageView中的圖片要大很多,這是因為中的ImageView中的圖片跟ImageView控件的大小而自動調整。Imag…

動態規劃-學習筆記

這是一份動態規劃(Dynamic Programming, DP)完整學習筆記。筆記將從一星難度(入門)到五星難度(進階),循序漸進,涵蓋核心思想、經典模型和解題方法論。 本來打算今天更新背包問題的題…

Linux 可信啟動深度解析:從UEFI到操作系統的信任鏈

文章目錄引言一、 可信根基:TPM與核心概念1.1 什么是“度量” (Measurement)?1.2 信任鏈與TPM PCR二、 階段一:固件的可信啟動 (UEFI)2.1 引導的起點:從SEC到DXE的初始化2.2 引導設備選擇 (BDS):UEFI如何找到GRUB2.3 S…

61-python中面向對象三大特性

前言: 面向對象編程,是許多編程語言都支持的一種編程思想。簡單理解是:基于模板(類)去創建實體(對象), 使用對象完成功能開發。面向對象包含三大主要特性: 封裝 繼承 多態…

BP-Adaboost模型

BP-Adaboost模型是一種將BP神經網絡作為弱分類器的集成學習框架,通過AdaBoost算法動態調整樣本權重和模型權重,顯著提升預測精度和泛化能力。一、模型架構與工作原理 1. 基礎框架 弱分類器單元:采用單隱藏層BP神經網絡(結構示例&a…

k230 +canMV+ LVGL控件 仿手表表盤觸摸屏滾動、選中后彈窗效果完整示例程序

現在智能手表用的越來越多,其交互方式比較有特點,現在k230開發板上,基于LVGL(Light and Versatile Graphics Library)編寫一個嵌入式GUI應用程序,使用LVGL配合觸摸屏實現模仿智能手表的表盤滾動效果,實際效果如下: 程序使用LVGL圖形庫和MediaManager程序,創建帶有觸摸…

使用Vue.js和WebSocket打造實時庫存儀表盤

大家好!今天我將分享一個簡單卻強大的實時庫存儀表盤項目,基于Vue.js和WebSocket技術。這個項目適合初學者學習前端實時數據處理,也能為你的技術博客或作品集增添亮點!通過這個教程,你將學會如何使用WebSocket實現實時…

leecode100——接雨水

題目 雙指針 思路1 使用參數存儲從左往右(從右往左同理)遍歷時的最高的柱子, 然后移動左右的指針,每次移動左右指針中偏向小的, 如果當前指針指的柱子小于最高的柱子,就會存在接到水。 思路2 把水看作柱子&…

復古膠片風格街拍人像Lr調色教程,手機濾鏡PS+Lightroom預設下載!

調色教程復古膠片風格街拍人像 Lightroom 調色,通過模擬經典膠片相機的色彩科學,為現代數碼照片注入懷舊韻味。這種調色手法注重低飽和度色彩、柔和的高光過渡和豐富的暗部細節,配合適度的顆粒感,營造出時光沉淀的質感。特別適合街…

Linux的gpio子系統

GPIO其實也是某個pin的功能之一。上一小節講解了 pinctrl 子系統,pinctrl 子系統重點是設置 PIN(有的 SOC 叫做 PAD)的復用和電氣屬性,如果 pinctrl 子系統將一個 PIN 復用為 GPIO 的話,那么接下來就要用到 gpio 子系統了。gpio 子系統顧名思…

VC++ CPU指令集檢測工具實現原理

📈 VC CPU指令集檢測工具實現原理 例圖:🧠 1. 核心原理:CPUID指令 // 使用CPUID指令獲取CPU信息 int cpuInfo[4] { -1 }; __cpuid(cpuInfo, 0); // 調用CPUID指令 int nIds cpuInfo[0]; // 獲取最大標準功能號CPUID指令工作流程…

大模型微調理論、實戰:LLaMA-Factory、Unsloth

概述 微調,Fine-Tuning,簡稱FT,可理解為對LLM的定制,目的是增強專業領域知識,并優化特定任務的性能。通過在特定數據集上微調一個預訓練模型,可實現: 更新知識:引入新的領域專屬信…

【LCA 樹上倍增】P9245 [藍橋杯 2023 省 B] 景區導游|普及+

本文涉及知識點 樹上倍增 P9245 [藍橋杯 2023 省 B] 景區導游 題目描述 某景區一共有 NNN 個景點,編號 111 到 NNN。景點之間共有 N?1N-1N?1 條雙向的擺渡車線路相連,形成一棵樹狀結構。在景點之間往返只能通過這些擺渡車進行,需要花費…

基于Python+Streamlit的旅游數據分析與預測系統:從數據可視化到機器學習預測的完整實現

🏞? 基于PythonStreamlit的旅游數據分析與預測系統:從數據可視化到機器學習預測的完整實現 📝 前言 在大數據時代,旅游行業的數據分析變得越來越重要。如何從海量的旅游數據中挖掘有價值的信息,并進行準確的銷量預測&…

飛算JavaAI全鏈路實戰:智能構建高可用電商系統核心架構

飛算JavaAI全鏈路實戰:智能構建高可用電商系統核心架構 前言:AI編程新時代的電商系統開發范式變革 在當今數字經濟時代,電商系統作為企業數字化轉型的核心載體,其復雜度和技術要求與日俱增。一個完整的電商系統不僅需要處理商品、…

論文精讀(五):面向鏈接預測的知識圖譜表示學習方法綜述

筆者鏈接:撲克中的黑桃A 專欄鏈接:論文精讀 本文關鍵詞:知識圖譜; 表示學習; 鏈接預測; 多元關系; 超關系 引 諸位技術同仁: 本系列將系統精讀的方式,深入剖析計算機科學頂級期刊/會議論文,聚焦前沿突破…

Roo Code之自定義指令(Custom Instructions),規則(Rules)

在Roo Code 中,Custom Instructions 可以通過Instructions 設定和Rules 規則文件實現。什么是Custom Instructions? 自定義指令(Custom Instructions)定義了超出Roo基本角色定義范圍的具體行為、偏好和約束。示例包括編碼風格、文檔標準、測試要求和工作…

9/8我是ai大師

一、變量定義部分(理解程序的 "記憶")c運行/* USER CODE BEGIN PV */ static uint8_t last_button_state 1; // 初始為高電平(未按下) static uint8_t device_mode 0; // 設備模式:0LD1, 1LD3, 2蜂鳴器, 3…

前沿重器[74] | 淘寶RecGPT:大模型推薦框架,打破信息繭房

前沿重器欄目主要給大家分享各種大廠、頂會的論文和分享,從中抽取關鍵精華的部分和大家分享,和大家一起把握前沿技術。具體介紹:倉頡專項:飛機大炮我都會,利器心法我還有。(算起來,專項啟動已經…

jenkins加docker 部署項目

jenkins加docker 部署springboot項目 1項目結構Dockerfile 內容 FROM openjdk:8-jdk-alpine ARG JAR_FILEtarget/*.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java","-jar","/app.jar","--server.port9090"]在A服務器上啟動jenkins …