UV: Python包和項目管理器(從入門到不放棄教程)

目錄

  • UV: Python包和項目管理器(從入門到不放棄教程)
    • 1. 為什么用uv,而不是conda或者pip
    • 2. 安裝uv(Windows)
      • 2.1 powershell下載
      • 2.2 winget下載
      • 2.3 直接下載安裝包
    • 3. uv教程
      • 3.1 創建虛擬環境 (`uv venv`)
    • 4. uvx
    • 5. 此pip非彼pip
    • 6. uv沒有虛擬環境的列表

UV: Python包和項目管理器(從入門到不放棄教程)

還在用慢吞吞的 pip 和略復雜的 conda 嗎?試試 uv!🚀 這款用 Rust 打造的 Python 包管理器,速度快到飛起!?? 集成虛擬環境管理,告別 virtualenv。安裝、卸載、鎖定依賴,統統快人一步!💨 讓你的 Python 開發更流暢、更高效!?

1. 為什么用uv,而不是conda或者pip

你還在為遲遲進不去conda環境而煩惱嗎?你是不是感覺pip安裝一些大點的Python包賊拉慢!

對,你不是一個人,是時候做個渣男,放棄舊愛conda/pip,擁抱新歡uv啦!
TL;DR: uv 之所以被開發者考慮用作 condapip 的替代品,主要是因為它號稱自己比pip快10-100倍!這你敢信?!高低得安裝一下嘗嘗鮮!

在這里插入圖片描述

相對于 pip

  • 速度更快: uv 使用 Rust 編寫,這使得它在包的安裝、依賴解析和虛擬環境創建等方面通常比 pip 快很多倍。尤其是在處理大型項目和復雜的依賴關系時,速度差異更為明顯。
  • 集成的環境管理: uv 不僅處理包管理(像 pip 那樣),還內置了虛擬環境管理的功能(類似于 virtualenv)。這意味著你不需要單獨使用 virtualenv 來創建和管理虛擬環境,uv venv 命令就能完成。
  • 更現代的設計: uv 旨在解決 pip 長期存在的一些性能和用戶體驗問題,例如依賴沖突處理和錯誤消息提示。
  • 兼容性: uv 在設計上力求與 pip 的生態系統兼容,這意味著它仍然可以從 PyPI (Python Package Index) 安裝包,并且理解 requirements.txt 文件。

相對于 conda

  • 更輕量級和更專注于 Python 包: conda 是一個更通用的包管理器,它可以管理包括 Python、非 Python 的庫(如 C/C++ 依賴)以及整個軟件棧。uv 目前更專注于 Python 包的管理。如果你主要處理 Python 項目,并且不需要 conda 的非 Python 包管理能力,uv 通常更輕量級。
  • 速度: 在 Python 包的安裝和環境創建方面,uv 通常比 conda 更快。conda 的依賴解析有時會比較慢。
  • 更貼近 pip 的工作流程: 對于已經習慣了 pipvirtualenv 工作流程的開發者來說,uv 的某些命令和概念可能更容易理解和接受。
  • 避免 conda 的一些復雜性: conda 的環境管理有時可能比較復雜,尤其是在處理不同頻道(channels)和依賴沖突時。uv 的設計目標是更簡潔和直接。

2. 安裝uv(Windows)

具體安裝文檔可參考官方文檔:https://docs.astral.sh/uv/getting-started/installation/
以下是在Windows系統下的幾種安裝方式。

2.1 powershell下載

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

2.2 winget下載

winget install --id=astral-sh.uv  -e

2.3 直接下載安裝包

🤣😂🤣😂 哎喲喂!本該一行命令輕松搞定,誰料卡在了 GitHub 這道墻🧱,😭。看來只能手動“搭梯子”去搬運資源了(🤫🤫🤫 你懂的)。

下載地址:uv-x86_64-pc-windows-msvc.zip
解壓后,將解壓后的文件夾目錄設置環境變量即可生效。

3. uv教程

3.1 創建虛擬環境 (uv venv)

  • 功能: 創建一個新的 Python 虛擬環境。

  • 示例:

    # 在當前目錄下創建一個名為 .venv 的虛擬環境,使用系統默認的 Python 版本
    uv venv# 在當前目錄下創建一個名為 my-project-env 的虛擬環境,使用指定的 Python 3.11 版本
    uv venv -p python3.11 my-project-env# 在指定路徑創建一個名為 custom-env 的虛擬環境,使用 Python 3.10
    uv venv -p python3.10 /path/to/my/project/custom-env
    

3.2. 安裝包 (uv pip install)

  • 功能: 在激活的虛擬環境中安裝 Python 包。(ps:看到這里的pip老熟悉了,但是,此pip非彼pip,這里是uv本身的安裝命令。)

  • 示例:

    # 確保你已經激活了虛擬環境 
    # Windows (CMD): .\venv\Scripts\activate
    # macOS/Linux (Bash/Zsh): source venv/bin/activate# 安裝 requests 包
    uv pip install requests# 安裝指定版本的 Flask 包
    uv pip install Flask==2.2.2# 從 requirements.txt 文件安裝所有依賴
    uv pip install -r requirements.txt# 安裝開發依賴 (通常在 requirements-dev.txt 中)
    uv pip install -r requirements-dev.txt -d dev
    

3.3. 卸載包 (uv pip uninstall)

  • 功能: 從激活的虛擬環境中卸載指定的 Python 包。

  • 示例:

    # 確保你已經激活了虛擬環境# 卸載 requests 包
    uv pip uninstall requests# 卸載多個包
    uv pip uninstall Flask Werkzeug
    

3.4. 列出已安裝的包 (uv pip list)

  • 功能: 顯示當前激活的虛擬環境中已安裝的包及其版本。

  • 示例:

    # 確保你已經激活了虛擬環境
    uv pip list
    

3.5. 導出 requirements 文件 (uv pip freeze)

  • 功能: 將當前激活的虛擬環境中已安裝的包及其確切版本導出到 requirements.txt 文件中。

  • 示例:

    # 確保你已經激活了虛擬環境# 導出到默認的 requirements.txt 文件
    uv pip freeze > requirements.txt# 導出到指定的文件
    uv pip freeze > my_dependencies.txt
    

3.6. 運行工具 (uv tool run) 或其別名 (uvx)

  • 功能: 運行由 Python 包提供的命令行工具,無需顯式安裝到當前虛擬環境或全局環境。uv 會自動創建一個臨時的隔離環境來運行該工具。

  • 示例:

    # 運行 black 代碼格式化工具
    uvx black .# 運行 flake8 代碼檢查工具
    uv tool run flake8 my_module.py# 運行指定版本的 pylint
    uvx pylint@2.10.0 my_module.py
    

3.7. 鎖定依賴 (uv pip compile)

  • 功能:requirements.in 文件編譯生成精確的鎖定文件 (requirements.txt),包含所有直接和間接依賴及其確切版本。這有助于實現可復現的構建。

  • 示例:

    # 假設你有一個 requirements.in 文件# 編譯生成 requirements.txt
    uv pip compile requirements.in -o requirements.txt# 指定輸出文件
    uv pip compile input_deps.in -o locked_deps.txt
    

3.8. 同步依賴 (uv pip sync)

  • 功能: 根據鎖定的 requirements.txt 文件同步當前虛擬環境中的依賴。如果虛擬環境中的包與鎖定文件不一致,uv 會安裝、升級或卸載包以使其與鎖定文件匹配。

  • 示例:

    # 確保你已經激活了虛擬環境,并且有一個 requirements.txt 文件# 根據 requirements.txt 同步虛擬環境
    uv pip sync requirements.txt# 同步指定的鎖定文件
    uv pip sync locked_dependencies.txt
    

3.9. 移除虛擬環境 (uv venv --remove)

  • 功能: 刪除指定的虛擬環境。

  • 示例:

    # 刪除當前目錄下的名為 .venv 的虛擬環境
    uv venv --remove .venv# 刪除指定路徑的虛擬環境
    uv venv --remove /path/to/my/project/my-project-env
    

這些操作涵蓋了使用 uv 進行 Python 項目開發和依賴管理的常見需求。記住在使用 uv pip install, uv pip uninstall, uv pip list, uv pip freeze, uv pip sync 等命令時,通常需要在你的虛擬環境被激活的狀態下進行操作,以確保這些操作影響的是你的項目環境而不是全局環境。

4. uvx

當你在安裝uv的時候,同時也會安裝uvxuvx是一個無需安裝即可運行 Python 工具的命令, uvx 專門用于調用由 Python 包提供的命令行工具,而無需將這些工具顯式安裝到項目的虛擬環境或全局環境中。

  • uv tool run 的別名: uvx 命令是 uv tool run 的直接別名。這兩個命令完全等效。
  • 在臨時的、隔離的環境中安裝工具: 當你使用 uvx <工具> 時,uv會自動創建一個臨時的、隔離的虛擬環境,將包含該工具的必要包安裝到該環境中,運行該工具,然后通常會丟棄該臨時環境(盡管它可能會被緩存以加快后續運行速度)。
  • 類似于 Node.js 中的 npxuvx 的功能與 Node.js 生態系統中的 npx 非常相似,允許你執行工具而無需全局安裝它們。

5. 此pip非彼pip

uv 自身就實現了安裝 Python 包的功能,它是一個替代 pip 的工具。 當你運行 uv pip install 時,uv 會使用它自己的內部邏輯來下載、解析和安裝包,而不會依賴于系統中是否安裝了 pip。因此,如果你想使用 uv 來安裝包,直接使用 uv pip install <包名> 即可,無需擔心是否安裝了 pip

  • uv pip installuv 提供的安裝包的命令。
  • uv 自身包含了安裝包的邏輯,不需要依賴 于傳統的pip
  • 即使你的系統中沒有安裝 pip,你也可以直接使用 uv pip install 來安裝包。

6. uv沒有虛擬環境的列表

用過conda的人都熟悉conda env list來查看已經安裝的虛擬環境有哪些。但是uv沒有哦。

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

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

相關文章

網絡開發基礎(游戲方向)之 概念名詞

前言 1、一款網絡游戲分為客戶端和服務端兩個部分&#xff0c;客戶端程序運行在用戶的電腦或手機上&#xff0c;服務端程序運行在游戲運營商的服務器上。 2、客戶端和服務端之間&#xff0c;服務端和服務端之間一般都是使用TCP網絡通信。客戶端和客戶端之間通過服務端的消息轉…

java將pdf轉換成word

1、jar包準備 在項目中新增lib目錄&#xff0c;并將如下兩個文件放入lib目錄下 aspose-words-15.8.0-jdk16.jar aspose-pdf-22.9.jar 2、pom.xml配置 <dependency><groupId>com.aspose</groupId><artifactId>aspose-pdf</artifactId><versi…

【C/C++】插件機制:基于工廠函數的動態插件加載

本文介紹了如何通過 C 的 工廠函數、動態庫&#xff08;.so 文件&#xff09;和 dlopen / dlsym 實現插件機制。這個機制允許程序在運行時動態加載和調用插件&#xff0c;而無需在編譯時知道插件的具體類型。 一、 動態插件機制 在現代 C 中&#xff0c;插件機制廣泛應用于需要…

【音視頻】AAC-ADTS分析

AAC-ADTS 格式分析 AAC?頻格式&#xff1a;Advanced Audio Coding(?級?頻解碼)&#xff0c;是?種由MPEG-4標準定義的有損?頻壓縮格式&#xff0c;由Fraunhofer發展&#xff0c;Dolby, Sony和AT&T是主 要的貢獻者。 ADIF&#xff1a;Audio Data Interchange Format ?…

機器學習 Day12 集成學習簡單介紹

1.集成學習概述 1.1. 什么是集成學習 集成學習是一種通過組合多個模型來提高預測性能的機器學習方法。它類似于&#xff1a; 超級個體 vs 弱者聯盟 單個復雜模型(如9次多項式函數)可能能力過強但容易過擬合 組合多個簡單模型(如一堆1次函數)可以增強能力而不易過擬合 集成…

通過爬蟲方式實現頭條號發布視頻(2025年4月)

1、將真實的cookie貼到代碼目錄中toutiaohao_cookie.txt文件里,修改python代碼里的user_agent和video_path, cover_path等變量的值,最后運行python腳本即可; 2、運行之前根據import提示安裝一些常見依賴,比如requests等; 3、2025年4月份最新版; 代碼如下: import js…

Linux ssh免密登陸設置

使用 ssh-copy-id 命令來設置 SSH 免密登錄&#xff0c;并確保所有相關文件和目錄權限正確設置&#xff0c;可以按照以下步驟進行&#xff1a; 步驟 1&#xff1a;在源服務器&#xff08;198.120.1.109&#xff09;生成 SSH 密鑰對 如果還沒有生成 SSH 密鑰對&#xff0c;首先…

《讓機器人讀懂你的心:情感分析技術融合奧秘》

機器人早已不再局限于執行簡單機械的任務&#xff0c;人們期望它們能像人類伙伴一樣&#xff0c;理解我們的喜怒哀樂&#xff0c;實現更自然、溫暖的互動。情感分析技術&#xff0c;正是賦予機器人這種“理解人類情緒”能力的關鍵鑰匙&#xff0c;它的融入將徹底革新機器人與人…

Linux筆記---進程間通信:匿名管道

1. 管道通信 1.1 管道的概念與分類 管道&#xff08;Pipe&#xff09; 是進程間通信&#xff08;IPC&#xff09;的一種基礎機制&#xff0c;主要用于在具有親緣關系的進程&#xff08;如父子進程、兄弟進程&#xff09;之間傳遞數據&#xff0c;其核心特性是通過內核緩沖區實…

Ollama API 應用指南

1. 基礎信息 默認地址: http://localhost:11434/api數據格式: application/json支持方法: POST&#xff08;主要&#xff09;、GET&#xff08;部分接口&#xff09; 2. 模型管理 API (1) 列出本地模型 端點: GET /api/tags功能: 獲取已下載的模型列表。示例:curl http://lo…

【OSCP-vulnhub】Raven-2

目錄 端口掃描 本地/etc/hosts文件解析 目錄掃描&#xff1a; 第一個flag 利用msf下載exp flag2 flag3 Mysql登錄 查看mysql的運行權限 MySql提權&#xff1a;UDF 查看數據庫寫入條件 查看插件目錄 查看是否可以遠程登錄 gcc編譯.o文件 創建so文件 創建臨時監聽…

Podman Desktop:現代輕量容器管理利器(Podman與Docker)

前言 什么是 Podman Desktop&#xff1f; Podman Desktop 是基于 Podman CLI 的圖形化開源容器管理工具&#xff0c;運行在 Windows&#xff08;或 macOS&#xff09;上&#xff0c;默認集成 Fedora Linux&#xff08;WSL 2 環境&#xff09;。它提供與 Docker 類似的使用體驗…

極狐GitLab 權限和角色如何設置?

極狐GitLab 是 GitLab 在中國的發行版&#xff0c;關于中文參考文檔和資料有&#xff1a; 極狐GitLab 中文文檔極狐GitLab 中文論壇極狐GitLab 官網 權限和角色 (BASIC ALL) 將用戶添加到項目或群組時&#xff0c;您可以為他們分配角色。該角色決定他們在極狐GitLab 中可以執…

解鎖現代生活健康密碼,開啟養生新方式

在科技飛速發展的當下&#xff0c;我們享受著便捷生活&#xff0c;卻也面臨諸多健康隱患。想要維持良好狀態&#xff0c;不妨從這些細節入手&#xff0c;解鎖科學養生之道。? 腸道是人體重要的消化器官&#xff0c;也是最大的免疫器官&#xff0c;養護腸道至關重要。日常可多…

Kafka 主題設計與數據接入機制

一、前言&#xff1a;萬物皆流&#xff0c;Kafka 是入口 在構建實時數倉時&#xff0c;Kafka 既是 數據流動的起點&#xff0c;也是后續流處理系統&#xff08;如 Flink&#xff09;賴以為生的數據源。 但“消息進來了” ≠ “你就能處理好了”——不合理的 Topic 設計、接入方…

【繪制圖像輪廓|凸包特征檢測】圖像處理(OpenCV) -part7

15 繪制圖像輪廓 15.1 什么是輪廓 輪廓是一系列相連的點組成的曲線&#xff0c;代表了物體的基本外形。相對于邊緣&#xff0c;輪廓是連續的&#xff0c;邊緣不一定連續&#xff0c;如下圖所示。輪廓是一個閉合的、封閉的形狀。 輪廓的作用&#xff1a; 形狀分析 目標識別 …

uniapp中使用<cover-view>標簽

文章背景&#xff1a; uniapp中遇到了原生組件(canvas)優先級過高覆蓋vant組件 解決辦法&#xff1a; 使用<cover-view>標簽 踩坑&#xff1a; 我想實現的是一個vant組件庫中動作面板的效果&#xff0c;能夠從底部彈出框&#xff0c;讓用戶進行選擇&#xff0c;我直…

Kafka常見問題及解決方案

Kafka 是一個強大的分布式流處理平臺&#xff0c;廣泛用于高吞吐量的數據流處理&#xff0c;但在實際使用過程中&#xff0c;也會遇到一些常見問題。以下是一些常見的 Kafka 問題及其對應的解決辦法的詳細解答&#xff1a; 消息丟失 一、原因 1.生產端 網絡故障、生產者超時…

leetcode 二分查找應用

34. Find First and Last Position of Element in Sorted Array 代碼&#xff1a; class Solution { public:vector<int> searchRange(vector<int>& nums, int target) {int low lowwer_bound(nums,target);int high upper_bound(nums,target);if(low high…

【Docker】在容器中使用 NVIDIA GPU

解決容器 GPU 設備映射問題&#xff0c;實現 AI 應用加速 &#x1f517; 官方文檔&#xff1a;NVIDIA Container Toolkit GitHub 常見錯誤排查 若在運行測試容器時遇到以下錯誤&#xff1a; docker: Error response from daemon: could not select device driver ""…