python新工具-uv包管理工具

uv 是一個由 Astral (Ruff 的創建者) 開發的極速 Python 包和項目管理器,用 Rust 編寫。它旨在作為傳統 Python 包管理工具(如 pippip-toolspipxpoetrypyenvtwinevirtualenv 等)的替代品,通過其高性能和多功能集成,解決 Python 生態系統中常見的痛點,例如安裝速度慢、依賴沖突和環境管理復雜性。
在這里插入圖片描述

1. uv 工具的基本介紹、背景和主要功能

uv 的核心目標是提供一個統一、高效的解決方案,以簡化 Python 項目的開發工作流。

背景:
Python 的包管理生態系統長期以來存在一些挑戰,包括安裝速度慢、依賴解析效率低以及工具鏈碎片化(需要使用多個工具來完成不同的任務)。uv 的出現旨在通過 Rust 的性能優勢和一體化設計,克服這些問題,提供一個更快速、更可靠、更易用的開發體驗。

主要功能:

  • 極速性能:比 pip 快 10-100 倍,尤其在處理大型項目和復雜依賴時表現出色。
  • 一體化解決方案:集成了 pippip-toolspipxpoetrypyenvtwinevirtualenv 等多種工具的功能,簡化了工作流。
  • 全面的項目管理:提供統一的鎖文件 (uv.lock),確保環境的可復現性。
  • 虛擬環境管理:內置虛擬環境創建和管理功能,無需單獨使用 virtualenvvenv
  • Python 版本管理:支持安裝和管理多個 Python 版本。
  • 腳本執行:能夠運行帶有內聯依賴元數據的腳本。
  • 命令行工具管理:可以運行和安裝作為 Python 包發布的命令行工具(類似于 pipx)。
  • 兼容 pip 接口:提供 pip 兼容接口,方便現有項目平滑遷移。
  • 磁盤空間效率:通過全局緩存實現依賴去重,節省磁盤空間。
  • 跨平臺支持:支持 macOS、Linux 和 Windows 操作系統。
  • 無需 Rust 或 Python 即可安裝:可以通過 curlpip 輕松安裝。

2. uv 工具的安裝方法和基本使用流程

uv 的安裝非常便捷,并且提供了多種方式。

安裝方法:

  1. 獨立安裝程序 (推薦)
    • macOS 和 Linux:
      curl -LsSf https://astral.sh/uv/install.sh | sh
      # 或者指定版本
      curl -LsSf https://astral.sh/uv/install.sh | sh -s -- --version 0.6.12
      
    • Windows (PowerShell):
      powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
      
  2. 通過 pipx 安裝
    pipx install uv
    
    (需要先安裝 pipx
  3. 通過 pip 安裝
    pip install uv
    
    (不推薦全局安裝,可能導致系統 Python 環境混亂)

更新 uv

  • 如果通過獨立安裝程序安裝:
    uv self update
    
  • 如果通過 pipx 安裝:
    pipx upgrade uv
    

基本使用流程:

  1. 驗證安裝

    uv --version
    

    應顯示 uv 的版本信息。

  2. 創建虛擬環境
    uv 可以自動管理虛擬環境。你也可以手動創建:

    uv venv
    # 或指定 Python 版本
    uv venv --python 3.12.0
    

    這會在當前目錄下創建一個名為 .venv 的虛擬環境。

  3. 激活虛擬環境

    source .venv/bin/activate  # macOS/Linux
    .venv\Scripts\activate     # Windows
    
  4. 安裝依賴

    • 安裝單個包:
      uv add requests
      
    • 安裝 requirements.txt 中的依賴:
      uv pip install -r requirements.txt
      
    • 同步鎖文件中的依賴:
      uv pip sync docs/requirements.txt
      
  5. 運行腳本或命令
    uv run 會自動鎖定和同步項目依賴,然后執行命令。

    uv run python your_script.py
    

3. uv 工具的使用示例和最佳實踐

uv 提供了豐富的功能來管理 Python 項目的生命周期。

項目初始化與依賴管理:

  • 初始化新項目

    uv init my_project
    cd my_project
    

    這會創建一個包含 .git/.gitignore.python-versionREADME.mdmain.pypyproject.toml 的項目結構。

  • 添加依賴

    uv add requests pandas
    

    這會將 requestspandas 添加到 pyproject.toml[project].dependencies 中,并自動更新 uv.lock 文件。

  • 添加開發依賴

    uv add ruff --dev
    

    這會將 ruff 添加到 pyproject.toml[project].optional-dependencies[tool.uv.dependency-groups] 中。

  • 移除依賴

    uv remove requests
    
  • 鎖文件 (uv.lock)
    uv 會自動生成和管理 uv.lock 文件,其中包含所有依賴的精確版本。最佳實踐是將其提交到版本控制中,以確保團隊成員和部署環境之間的一致性。

  • 編譯 requirements.txt
    如果你需要生成 pip 兼容的 requirements.txt 文件:

    uv pip compile docs/requirements.in --universal --output-file docs/requirements.txt
    

命令行工具管理:

  • 臨時運行工具 (uvx)
    uvxuv tool run 的別名,它會在一個臨時的、隔離的環境中運行工具,而無需全局安裝。

    uvx pycowsay 'hello from uv'
    uvx ruff check
    

    這對于不經常使用的工具或避免全局環境污染非常有用。

  • 全局安裝工具

    uv tool install ruff
    

    安裝后,工具的可執行文件會添加到 PATH 中,可以直接調用。

  • 升級已安裝工具

    uv tool upgrade ruff
    

腳本執行:

  • 運行帶有內聯元數據的腳本
    uv 可以讀取腳本文件中的內聯元數據來安裝和運行其依賴。
    echo 'import requests; print(requests.get("https://www.example.com"))' > example.py
    uv add --script example.py requests
    uv run example.py
    

構建和發布包:

  • 構建分發包

    uv build
    

    這會生成源代碼分發包 (.tar.gz) 和輪子文件 (.whl)。

  • 發布包到 PyPI

    uv publish
    

    (通常需要配置 PyPI 憑據,例如通過 ~/.pypirc 文件或環境變量)

CI/CD 集成:

uv 提供了與持續集成/持續部署 (CI/CD) 流程的良好集成。

  • GitHub Actions
    推薦使用官方的 astral-sh/setup-uv Action 來安裝 uv 并配置緩存。

    name: Example
    jobs:uv-example:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v4- name: Install uvuses: astral-sh/setup-uv@v5with:version: 0.6.12 # 固定 uv 版本
    
  • GitLab CI/CD
    Astral 提供了預裝 uv 的 Docker 鏡像,可以直接在 .gitlab-ci.yml 中使用。

    variables:UV_VERSION: "0.5"PYTHON_VERSION: "3.12"BASE_LAYER: bookworm-slim
    uv:image: ghcr.io/astral-sh/uv:$UV_VERSION-python$PYTHON_VERSION-$BASE_LAYER
    

uv 與其他工具的比較:

下表總結了 uvpipvirtualenvCondaPoetry 的主要區別:

特性uvPIP + virtualenvCondaPoetry
實現語言RustPythonPythonPython
速度pip 快 10-100 倍基準pippip
內存使用非常高效較高中等
環境管理內置需要單獨工具內置內置
依賴解析快速,現代化解析器基本全面現代化解析器
非 Python 包
鎖文件是 (uv.lock)否 (基本 requirements.txt)
項目結構
包發布是 (配合 twine)
兼容性與現有 pip 生態系統兼容標準 Python 工具獨立生態系統更具主觀性
錯誤處理清晰的錯誤信息基本良好良好
資源占用極小中等中等
科學計算重點
跨平臺一致性良好有限優秀良好

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

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

相關文章

有關spring-ai的defaultSystem與systemMessage優先級

今天在寫項目的時候想用nacos隨時修改system的prompt,突然發現defaultSystem的優先級比systemMessage高很多,廢話我就不說了,看圖吧。你覺得證據不夠?那這樣呢?

#運維 | 前端 # Linux http.server 實踐:隱藏長文件名,簡短路徑 (http://IP:port/別名 ) 訪問

如何運行頁面為 http://ip:port/名稱 1. 準備文件目錄 假設文件原始位置: /home/ubuntu/projects/yinran/ckd.html將它移動到子目錄并改名為 index.html: mkdir -p /home/ubuntu/projects/yinran/ckd mv /home/ubuntu/projects/yinran/ckd.html \/home/u…

任務管理器不刷新

記錄一個小問題: 進入任務管理器之后發現頁面不會刷新,性能界面也是一致。解決辦法:查看–>更新速度–>正常

2025-08-21 Python進階9——__main__與lambda

文章目錄1 \_\_main\_\_1.1 name 變量1.1.1 當模塊作為主程序直接運行時1.1.2 當模塊被其他模塊導入時1.2 \_\_main\_\_ 的含義1.3 if \_\_name\_\_ \_\_main\_\_1.5 小結2 lambda表達式2.1 基本概念2.2 lambda 函數語法2.3 使用示例2.4 與高階函數結合使用2.4.1 與 map () 結…

Java:將視頻上傳到騰訊云并通過騰訊云點播播放

功能需求:傳入一個videoFile也就是視頻字節流,返回騰訊云點播的視頻保存url需要在騰訊云中尋找的配置信息:導入的依賴:<!--騰訊云點播--><dependency><groupId>com.tencentcloudapi</groupId><artifactId>tencentcloud-sdk-java</artifactId&…

Unity3D物理游戲網絡同步指南

前言 Unity3D 物理游戲的網絡同步是一個復雜但非常核心的話題。要實現一個流暢、公平且可擴展的多人物理游戲&#xff0c;需要深入的理解和精心的設計。 下面我將為你全面解析 Unity3D 物理游戲的網絡同步&#xff0c;包括核心概念、主流方案、實現細節以及最佳實踐。 對惹&…

Amazon Redshift 訪問配置完整指南

概述 Amazon Redshift 是 AWS 提供的云端數據倉庫服務,支持多種訪問方式。本文將詳細介紹如何配置 IAM 權限、使用 AWS 控制臺 Query Editor v2,以及通過 SQL Workbench/J 等第三方工具連接 Redshift 集群。 目錄 環境準備 IAM 權限配置 Redshift 用戶管理 AWS 控制臺訪問 …

electron-vite_19配置環境變量

前端配罟環境變量主要通過項目根目錄下的.env系列文件實現&#xff0c;不同框架(如Vue、React)或構建工具(如Vite、Webpack)的具體操作略有差異&#xff0c;但核心邏輯均為通過環境變量文件區分開發、測試、生產等環境。方案1: 直接在根目錄新建.env文件 1.在根目錄新建 .env.d…

【python】arange用法

1. NumPy 里的 np.arangeimport numpy as np# 語法 np.arange([start, ]stop, [step, ], dtypeNone)參數說明&#xff1a;start&#xff1a;起始值&#xff08;默認 0&#xff09;stop&#xff1a;終止值&#xff08;不包含這個值&#xff09;step&#xff1a;步長&#xff08;…

力扣1005:k次取反后最大化的數組和

力扣1005:k次取反后最大化的數組和題目思路代碼題目 給你一個整數數組 nums 和一個整數 k &#xff0c;按以下方法修改該數組&#xff1a; 選擇某個下標 i 并將 nums[i] 替換為 -nums[i] 。 重復這個過程恰好 k 次。可以多次選擇同一個下標 i 。 以這種方式修改數組后&…

國產數據庫管理工具 CloudDM 2.7.1.0 發布,OceanBase 等數據源支持復雜 SQL 脫敏數據

CloudDM 是 ClouGence 公司推出的面向團隊使用的數據庫管理工具&#xff0c;支持云上、云下、多云等多種環境&#xff0c;并且提供多達 23 種數據源的支持。CloudDM 還支持數據庫 DevOps CI/CD 功能&#xff0c;將用戶產品發布流程中數據庫發布和程序發布無縫串聯起來。 更新亮…

AI大模型實戰:用自然語言處理技術高效處理日常瑣事

引言在數字化時代&#xff0c;我們每天都會面對大量的瑣碎事務&#xff1a;整理會議記錄、處理名單數據、撰寫學習筆記等等。這些工作不僅耗時&#xff0c;而且容易出錯。幸運的是&#xff0c;隨著人工智能技術的發展&#xff0c;特別是大語言模型&#xff08;LLM&#xff09;的…

【spring security】為什么要使用userdetailservice

Spring Security UserDetailsService 深度解析&#xff1a;從401到認證成功的完整實現 &#x1f4cb; 目錄 問題背景Spring Security認證架構UserDetailsService的作用完整實現過程常見問題與解決方案最佳實踐 &#x1f3af; 問題背景 在開發B2B采購平臺時&#xff0c;我們…

機器學習中的數據處理技巧

一、Pandas處理丟失數據&#xff08;一&#xff09;判斷缺失值??isnull()函數??&#xff1a;用于判斷數據框&#xff08;DataFrame&#xff09;中各個單元格是否為空&#xff0c;可幫助我們識別出存在缺失數據的單元格位置。&#xff08;二&#xff09;處理缺失值的方法??…

田野科技“一張皮”,“AI+虛擬仿真”推動考古教學創新發展

文運同國運相牽&#xff0c;文脈同國脈相連。考古不僅關系到我們對古代文化的認知、發掘、保護、利用&#xff0c;關系到考古學學科體系、學術體系、話語體系的建設&#xff0c;更是關系到我國考古學的國際影響力&#xff0c;對增強世界不同地區古代文明的比較研究有著十分重要…

為什么我的UI界面會突然卡頓,失去響應

有操作都應是“非阻塞”的&#xff0c;以確保能隨時響應用戶的輸入。導致主線程阻塞的常見“元兇”主要涵蓋五個方面&#xff1a;主線程被“長時間”的同步計算所“阻塞”、單次渲染的界面節點過多或過于復雜、內存中存在“未釋放”的巨大對象或“內存泄漏”、響應了“高頻率”…

大規模IP輪換對網站的影響(服務器壓力、風控)

在當下的互聯網環境中&#xff0c;代理IP輪換已經成為爬蟲、SEO、數據采集等行業的常見手段。尤其是大規模數據抓取時&#xff0c;通過代理池實現IP輪換&#xff0c;可以有效避免因單一IP請求過于頻繁而被目標網站封禁。 然而&#xff0c;大規模IP輪換雖然對采集方有利&#xf…

4. STM32 vscode 環境, 官方插件

文章目錄1. 新建配置2. 安裝插件3. 新建工程1. 新建配置 新建vscode 配置&#xff0c; 因為stm32插件比較多&#xff0c; 避免和其他插件沖突。 激活環境&#xff1a; 這里可快速切換&#xff1a; 2. 安裝插件 可選擇安裝最新預覽版&#xff1a; 等待依賴安裝完成后重啟…

【動態規劃:路徑問題】最小路徑和 地下城游戲

最小路徑和&#xff08;medium&#xff09; 64. 最小路徑和 ? 給定一個包含非負整數的 m x n 網格 grid &#xff0c;請找出一條從左上角到右下角的路徑&#xff0c;使得路徑上的數字總和為最小。 ? **說明&#xff1a;**每次只能向下或者向右移動一步。 示例 1&#xff…

SQL詳細語法教程(七)核心優化

以下對 SQL 優化 涉及的關鍵場景&#xff08;含 update 行鎖優化&#xff09;進行極致詳細的拆解&#xff0c;從底層原理、執行流程到實戰代碼、避坑指南全維度覆蓋&#xff0c;搭配表格對比讓邏輯更清晰&#xff1a;一、SQL 優化 - COUNT 優化1. 底層原理&#xff1a;COUNT() …