UV-python環境管理工具 入門教程

在學習使用 MCP 的時候接觸到了 UV 這個環境管理工具,經過對比,發現它在諸多方面比 venv、conda 等工具更為出色,因此整理了這份簡單的入門學習筆記,希望能幫助大家快速上手。

介紹

UV 是一款集 Python 版本管理、虛擬環境創建與管理、依賴安裝等多功能于一體的輕量級工具,可類比為 “pyenv + virtualenv + pip-tools” 的組合。與傳統工具不同,它使用 Rust 編寫,這賦予了它卓越的性能,在處理依賴安裝與解析時,速度可比 pip 快 10 - 100 倍 。

uv 的特點:

  1. 速度更快:相比 pip ,uv 采用 Rust 編寫,性能更優。
  2. 支持 PEP 582:無需 virtualenv ,可以直接使用
  3. 兼容 pip :支持 pypackages 進行管理。 requirements.txt 和 pyproject.toml 依賴管理。
  4. 替代 venv :提供 uv venv 進行虛擬環境管理,比venv更輕量
  5. 跨平臺:支持 Windows、macOS 和 Linux。

安裝

方法 1:pip
使用 pip 安裝(適用于已安裝 pip 的系統)
 pip install uv
方法 2:curl
使用 curl 直接安裝 如果你的系統沒有 pip

直接運行:

curl https://raw.githubusercontent.com/1stG/uv/master/installer.sh | bash

這會自動下載 uv 并安裝到 /usr/local/bin 。

方法 3:Windows 下的 PowerShell 安裝

在 Windows 系統中,可通過 PowerShell 執行以下命令進行安裝:

irm https://raw.githubusercontent.com/1stG/uv/master/installer.ps1 | iex

安裝完成后,可通過命令uv --version驗證是否安裝成功 。

換源

在 Windows 系統上修改 UV 的下載源,通過環境變量修改
UV 提供了 UV_PYPI_INDEX_URL環境變量來設置默認的包索引源。

設置方法:
打開 “此電腦” 或 “我的電腦”,右鍵點擊選擇 “屬性”。
在彈出的窗口中選擇 “高級系統設置”。
在 “系統屬性” 窗口中,點擊 “環境變量” 按鈕。
在 “系統變量” 或 “用戶變量” 中點擊 “新建”:
變量名:UV_PYPI_INDEX_URL
變量值:設置為你想要的鏡像源地址,例如 https://pypi.tuna.tsinghua.edu.cn/simple。
點擊 “確定” 保存設置。

創建項目

筆者自己的理解:

? 在傳統的 venv、conda 等環境管理工具中,環境與項目相對獨立,一個環境可運行多個項目代碼(前提是環境匹配)。而 UV 通過在項目目錄生成配置文件(.uv),實現環境與項目的便捷關聯。默認情況下,進入項目目錄時需手動激活環境,也可配置自動激活 。環境本質上是獨立的,可在多個項目中復用。

因此,創建項目即創建環境。

uv init project_name --python 3.12
cd project_name

我們這里示例創建一個uv項目,名字叫uv_study:

uv init uv_study --python 3.12
cd uv_study

在這里插入圖片描述

執行上述命令后,UV 會在當前目錄下創建一個基于 Python 3.12 的虛擬環境,并生成.uv配置文件

在這里插入圖片描述

這樣,一個uv項目或者說一個uv環境就創建好了。

庫管理

要想在這個環境中添加依賴庫,只需要使用uv add命令即可。(當然得在對應的項目目錄下)

uv add package_name
# 等效于pip install,但是比pip更快

例如,下圖是uv初始環境:

在這里插入圖片描述

我們現在新安裝一個requests庫:

uv add requests

安裝完成后,uv會自動在pyproject.toml寫入依賴,比傳統的requirements.txt高效得多。

在這里插入圖片描述

當然也可以刪除庫:

uv remove requests

在這里插入圖片描述

運行項目

我們簡單修改一下main.py運行測試一下:

在這里插入圖片描述

使用uv run即可

uv run main.py

在這里插入圖片描述

使用別人的uv項目

我們這里先刪除我們自己的venv環境:

在這里插入圖片描述

然后再重新導入這個uv項目,同步依賴,根據項目pyproject.toml文件安裝所有聲明的包:

uv sync

在這里插入圖片描述

如此,即可快速搭建與原作者一致的開發環境 。

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

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

相關文章

【漫話機器學習系列】277.梯度裁剪(Gradient Clipping)

【深度學習】什么是梯度裁剪(Gradient Clipping)?一張圖徹底搞懂! 在訓練深度神經網絡,尤其是 RNN、LSTM、Transformer 這類深層結構時,你是否遇到過以下情況: 模型 loss 突然變成 NaN&#xf…

零基礎弄懂 ngx_http_slice_module分片緩存加速

一、為什么需要 Slice? 在 NGINX 反向代理或 CDN 場景中,大文件(視頻、軟件包、鏡像等)常因單體體積過大而令緩存命中率低、回源代價高。 ngx_http_slice_module 通過把一次完整響應拆分成 固定大小的字節塊(Slice&am…

機器人強化學習入門學習筆記(三)

強化學習(Reinforcement Learning, RL)與監督學習不同——你不需要預先準備訓練數據集,而是要設計環境、獎勵函數,讓智能體通過交互不斷探索和學習。 🎯 一、強化學習和訓練數據的關系 強化學習不依賴固定的數據集。它…

【python實戰】二手房房價數據分析與預測

個人主頁:大數據蟒行探索者 目錄 一、數據分析目標與任務 1.1背景介紹 1.2課程設計目標與任務 1.3研究方法與技術路線 二、數據預處理 2.1數據說明 2.2數據清洗 2.3數據處理 三、數據探索分析 四、數據分析模型 五、方案評估 摘要:隨著社會經…

Kotlin IR編譯器插件開發指南

在 Kotlin 中開發基于 IR(Intermediate Representation)的編譯器插件,可以深度定制語言功能或實現高級代碼轉換。以下是分步驟指南: 一、IR 編譯器插件基礎 IR 是什么? Kotlin 編譯器將源碼轉換為 IR 中間表示&#xf…

如何用 python 代碼復現 MATLAB simulink 的 PID

MATLAB在 Simulink 里做以下設置MATLAB 腳本調用示例 python 實現離散 PID 實現(并行形式) Simulink 中兩種 PID 結構(并聯形式, I-形式)下連續/離散時域里積分增益 I 的表示并聯(Parallel) vs 理想&#x…

黑馬點評--基于Redis實現共享session登錄

集群的session共享問題分析 session共享問題:多臺Tomcat無法共享session存儲空間,當請求切換到不同Tomcat服務時,原來存儲在一臺Tomcat服務中的數據,在其他Tomcat中是看不到的,這就導致了導致數據丟失的問題。 雖然系…

SkyWalking啟動失敗:OpenSearch分片數量達到上限的完美解決方案

?? 問題現象 SkyWalking OAP服務啟動時報錯: org.apache.skywalking.oap.server.library.module.ModuleStartException: java.lang.RuntimeException: {"error":{"root_cause":[{"type":"validation_exception", "reason&q…

向量數據庫選型實戰指南:Milvus架構深度解析與技術對比

導讀:隨著大語言模型和AI應用的快速普及,傳統數據庫在處理高維向量數據時面臨的性能瓶頸日益凸顯。當文檔經過嵌入模型處理生成768到1536維的向量后,傳統B-Tree索引的檢索效率會出現顯著下降,而現代應用對毫秒級響應的嚴苛要求使得…

MySQL#秘籍#一條SQL語句執行時間以及資源分析

背景 一條 SQL 語句的執行完,每個模塊耗時,不同資源(CPU/IO/IPC/SWAP)消耗情況我該如何知道呢?別慌俺有 - MySQL profiling 1. SQL語句執行前 - 開啟profiling -- profiling (0-關閉 1-開啟) -- 或者:show variables like prof…

【數據結構】實現方式、應用場景與優缺點的系統總結

以下是編程中常見的數據結構及其實現方式、應用場景與優缺點的系統總結: 一、線性數據結構 1. 數組 (Array) 定義:連續內存空間存儲相同類型元素。實現方式:int[] arr new int[10]; // Javaarr [0] * 10 # Python操作: 訪問&…

PyTorch中cdist和sum函數使用示例詳解

以下是PyTorch中cdist與sum函數的聯合使用詳解: 1. cdist函數解析 功能:計算兩個張量間的成對距離矩陣 輸入格式: X1:形狀為(B, P, M)的張量X2:形狀為(B, R, M)的張量p:距離類型(默認2表示歐式距離)輸出:形狀為(B, P, R)的距離矩陣,其中元素 d i j d_{ij} dij?表示…

Ansible配置文件常用選項詳解

Ansible 的配置文件采用 INI 格式,分為多個模塊,每個模塊包含特定功能的配置參數。 以下是ansible.cfg配置文件中對各部分的詳細解析: [defaults](全局默認配置) inventory 指定主機清單文件路徑,默認值為 …

了解FTP搜索引擎

根據資料, FTP搜索引擎是專門搜集匿名FTP服務器提供的目錄列表,并向用戶提供文件信息的網站; FTP搜索引擎專門針對FTP服務器上的文件進行搜索; 就是它的搜索結果是一些FTP資源; 知名的FTP搜索引擎如下, …

【大模型面試每日一題】Day 28:AdamW 相比 Adam 的核心改進是什么?

【大模型面試每日一題】Day 28:AdamW 相比 Adam 的核心改進是什么? 📌 題目重現 🌟🌟 面試官:AdamW 相比 Adam 的核心改進是什么? #mermaid-svg-BJoVHwvOm7TY1VkZ {font-family:"trebuch…

C++系統IO

C系統IO 頭文件的使用 1.使用系統IO必須包含相應的頭文件,通常使用#include預處理指令。 2.頭文件中包含了若干變量的聲明,用于實現系統IO。 3.頭文件的引用方式有雙引號和尖括號兩種,區別在于查找路徑的不同。 4.C標準庫提供的頭文件通常沒…

多模態理解大模型高性能優化丨前沿多模態模型開發與應用實戰第七期

一、引言 在前序課程中,我們系統剖析了多模態理解大模型(Qwen2.5-VL、DeepSeek-VL2)的架構設計。鑒于此類模型訓練需消耗千卡級算力與TB級數據,實際應用中絕大多數的用戶場景均圍繞推理部署展開,模型推理的效率影響著…

各個網絡協議的依賴關系

網絡協議的依賴關系 學習網絡協議之間的依賴關系具有多方面重要作用,具體如下: 幫助理解網絡工作原理 - 整體流程明晰:網絡協議分層且相互依賴,如TCP/IP協議族,應用層協議依賴傳輸層的TCP或UDP協議來傳輸數據&#…

11.8 LangGraph生產級AI Agent開發:從節點定義到高并發架構的終極指南

使用 LangGraph 構建生產級 AI Agent:LangGraph 節點與邊的實現 關鍵詞:LangGraph 節點定義, 條件邊實現, 狀態管理, 多會話控制, 生產級 Agent 架構 1. LangGraph 核心設計解析 LangGraph 通過圖結構抽象復雜 AI 工作流,其核心要素構成如下表所示: 組件作用描述代碼對應…

相機--基礎

在機器人開發領域,相機種類很多,作為一個機器人領域的開發人員,我們需要清楚幾個問題: 1,相機的種類有哪些? 2,各種相機的功能,使用場景? 3,需要使用的相機…