欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用uv管理python虛擬環(huán)境的流程步驟

 更新時間:2025年06月03日 11:16:18   作者:慕雪華年  
uv是高效Python虛擬環(huán)境管理工具,支持多平臺,可替代pip等,提升性能10倍以上,管理版本與依賴,集成MCP協(xié)議,簡化開發(fā)流程,本文給大家詳細介紹了如何使用uv管理python虛擬環(huán)境的流程步驟,需要的朋友可以參考下

1. 介紹uv

官網:https://docs.astral.sh/uv/

uv是一個python虛擬環(huán)境管理工具,可以用來替代pip、pyenv、virtualenv等等工具。根據官網的介紹,使用uv來管理虛擬環(huán)境,相比于pip能得到至少10倍以上的性能提升。

uv工具有如下功能:

  • 管理python版本;
  • 管理第三方庫(Python packages)的版本;
  • 擁有全局的第三方庫的緩存,能減少磁盤空間占用;
  • 安裝uv不需要python環(huán)境,可以通過curl或pip安裝;
  • 多平臺支持:macOS、Linux、Windows;

試用過后,感覺uv還是很不錯的,于是編寫本文,推薦給大家。

2. 安裝uv

文檔:https://docs.astral.sh/uv/getting-started/installation/

在linux和mac上的安裝直接使用curl或者wget命令即可

curl -LsSf https://astral.sh/uv/install.sh | sh
# 或者wget(效果一樣)
wget -qO- https://astral.sh/uv/install.sh | sh

在windows上的安裝命令如下

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

在mac上安裝之后,終端輸出如下

? curl -LsSf https://astral.sh/uv/install.sh | sh
downloading uv 0.6.14 aarch64-apple-darwin
no checksums to verify
installing to /Users/mothra/.local/bin
  uv
  uvx
everything's installed!

To add $HOME/.local/bin to your PATH, either restart your shell or run:

    source $HOME/.local/bin/env (sh, bash, zsh)
    source $HOME/.local/bin/env.fish (fish)

這里給出了提示,必須把$HOME/.local/bin這個路徑加到環(huán)境變量PATH里面才可以正常使用uv工具。設置之后,使用uv --version命令確認安裝成功。

? uv --version
uv 0.6.14 (a4cec56dc 2025-04-09)

2.1. 卸載uv

卸載uv之前,先執(zhí)行如下命令刪除所有本地緩存文件

uv cache clean
rm -r "$(uv python dir)"
rm -r "$(uv tool dir)"

然后再刪除uv的二進制文件

# mac/linux
rm ~/.local/bin/uv ~/.local/bin/uvx
# windows
rm $HOME.local\bin\uv.exe
rm $HOME.local\bin\uvx.exe

3. 基本使用

3.1. 管理python版本

使用如下命令,顯示出當前環(huán)境中所有可用的python版本(包括已經安裝的和可以安裝的)

uv python list

在我的電腦上,輸出如下,我的電腦上安裝了python 3.9.6(xcode開發(fā)者工具安裝的)、python 3.10.11、python 3.13.1版本,這幾個版本都可以用uv來調用。

? uv python list
cpython-3.14.0a6-macos-aarch64-none                 <download available>
cpython-3.14.0a6+freethreaded-macos-aarch64-none    <download available>
cpython-3.13.3-macos-aarch64-none                   <download available>
cpython-3.13.3+freethreaded-macos-aarch64-none      <download available>
cpython-3.13.1-macos-aarch64-none                   /opt/homebrew/bin/python3.13 -> ../Cellar/python@3.13/3.13.1/bin/python3.13
cpython-3.13.1-macos-aarch64-none                   /opt/homebrew/bin/python3 -> ../Cellar/python@3.13/3.13.1/bin/python3
cpython-3.13.0a3-macos-aarch64-none                 /usr/local/bin/python3.13 -> ../../../Library/Frameworks/Python.framework/Versions/3.13/bin/python3.13
cpython-3.12.10-macos-aarch64-none                  <download available>
cpython-3.11.12-macos-aarch64-none                  <download available>
cpython-3.10.17-macos-aarch64-none                  <download available>
cpython-3.10.11-macos-aarch64-none                  /usr/local/bin/python3.10 -> ../../../Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10
cpython-3.10.11-macos-aarch64-none                  /usr/local/bin/python3 -> ../../../Library/Frameworks/Python.framework/Versions/3.10/bin/python3
cpython-3.10.11-macos-aarch64-none                  /Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10
cpython-3.10.11-macos-aarch64-none                  /Library/Frameworks/Python.framework/Versions/3.10/bin/python3 -> python3.10
cpython-3.9.22-macos-aarch64-none                   <download available>
cpython-3.9.6-macos-aarch64-none                    /usr/bin/python3
cpython-3.8.20-macos-aarch64-none                   <download available>

如果需要安裝其他版本的python,使用如下命令

uv python install 3.12

除了標準python之外,還可以安裝其他的Python實現(xiàn),比如PyPy實現(xiàn)的python

uv python install pypy@3.10

查找某個python版本的路徑

? uv python find 3.10
/Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10

3.2. 選用python版本

在具體的某個項目中,進入項目目錄,使用如下命令指定選用的python版本

uv python pin 版本號

這個命令會在指定目錄下創(chuàng)建一個.python-version文件,內容如下

? uv python pin 3.10                                    
Pinned `.python-version` to `3.10`

? cat .python-version  
3.10

注意,這里選用的python版本只和uv管理的虛擬環(huán)境有關系,和我們全局的python、python3命令都沒有關系。

3.3. 創(chuàng)建虛擬環(huán)境(項目)

創(chuàng)建項目有兩種方式,第一種方式,先創(chuàng)建好項目目錄,然后設置python版本并初始化uv虛擬環(huán)境

uv python pin 3.10
uv init # 初始化

執(zhí)行了uv init之后,會在當前目錄下創(chuàng)建幾個文件,同時也會在當前目錄下執(zhí)行git init創(chuàng)建出一個新的git倉庫來

~/data/code/python/test_code                                                                                                      
? uv python pin 3.13
Pinned `.python-version` to `3.13`

~/data/code/python/test_code                                                                                                      
? uv init           
Initialized project `test-code`

~/data/code/python/test_code main ?6                                                                                              
? ls
README.md      main.py        pyproject.toml

另外一個方式是在init之后添加一個項目名,會自動創(chuàng)建項目文件夾

uv init 項目名

如果需要指定特定python版本,建議使用第一種方式來創(chuàng)建項目,否則還需要手動修改pyproject.toml配置文件里面需要的python版本。

3.4. 添加依賴

uv add 依賴項

比如添加requests庫

uv add requests

還可以指定具體版本

uv add requests==版本號

執(zhí)行了這個命令后,會在當前目錄下創(chuàng)建.venv虛擬環(huán)境目錄(在vscode里面可以選擇這個目錄作為虛擬環(huán)境,否則代碼解析會有問題),并添加我們要的依賴項,同時會新增一個uv.lock文件,用于存放依賴項版本相關的信息。pyproject.toml文件中的dependencies字段也會包含需要的依賴項。

~/data/code/python/test_code main ?6                                                                                              
? uv add requests
Using CPython 3.13.1 interpreter at: /opt/homebrew/opt/python@3.13/bin/python3.13
Creating virtual environment at: .venv
Resolved 6 packages in 13.85s
Prepared 5 packages in 5.55s
Installed 5 packages in 13ms
 + certifi==2025.1.31
 + charset-normalizer==3.4.1
 + idna==3.10
 + requests==2.32.3
 + urllib3==2.4.0

而且,從這個輸出中也能看到,它自動使用了.python-version指定的3.13版本的python,和當前我們全局目錄下的python3指向什么版本沒有關系(我的全局python3指向的是3.10版本)

3.5. 運行程序

依賴添加好后,就可以使用uv來運行python程序了

uv run 程序文件名 [命令行參數]

uv會自動按照我們的配置來運行程序,無序我們手動維護依賴項,也不需要手動去source各式各樣的虛擬環(huán)境了。

3.6. uvx命令

隨著uv下載的還有一個uvx命令,uvx命令本質上是uv tool run命令的別名,

uvx python main.py
# 等價于
uv run main.py
# 等價于
uv tool run main.py

實際例子,如下這兩個命令是等價的

? uvx --directory ~/data/code/python/test_code python main.py
Hello from test-code!
    
? uv tool run --directory ~/data/code/python/test_code python main.py
Hello from test-code!

3.7. 小結

基本操作就是這些了,更多復雜的操作詳見uv的官網。

4. 設置下載包的鏡像源

uv下載第三方庫本質上也是通過pypi源下載的,所以在國內網絡環(huán)境中默認鏈接速度會很慢,可以在項目目錄的pyproject.toml中添加如下內容來使用清華源

[[tool.uv.index]]
url = "https://pypi.tuna.tsinghua.edu.cn/simple"
default = true

運行uv add命令的時候也可以指定鏡像源

uv add --default-index https://pypi.tuna.tsinghua.edu.cn/simple requests

uv也提供了全局的配置項,可以通過環(huán)境變量UV_DEFAULT_INDEX配置鏡像源

export UV_DEFAULT_INDEX=https://pypi.tuna.tsinghua.edu.cn/simple

全局的配置項優(yōu)先級低于pyproject.toml中配置的鏡像源。如果pyproject.toml里面配置了鏡像源,則會使用pyproject.toml的配置。

5. 大模型mcp協(xié)議和uv

最近,ai agent中mcp協(xié)議的推出,讓慕雪了解到了uv工具。對于mcp而言,mcp server的開發(fā)可以使用python來編寫,此時python環(huán)境的管理就非常重要了。

以常見的mcp客戶端配置舉例,示例配置如下,其中test.py是我們編寫的一個mcp服務器。

{
	"mcpServers": {
		"工具名稱": {
			"command": "uv",
			"args": {
				"--directory",
				"工作路徑",
				"run",
				"test.py"
			}
		}
	}
}

下圖是mcp server和mcp client交互的簡要邏輯(這只是個簡要的流程)

graph TD;
	A[ai工具加載mcp配置] --> |啟動mcp服務器|B
	B[mcp client] --> |鏈接服務器,調用工具|C[mcp server] 
	C -->|返回工具調用結果|B

其中第一步,ai工具加載mcp配置的時候,就需要去根據我們填寫的mcpSever的配置來通過uv啟動我們的服務端了,此時如果還是用python自帶的venv來管理虛擬環(huán)境就不夠用了,因為這里沒有辦法指定虛擬環(huán)境的路徑,也沒有人去source venv/bin/activate那個虛擬環(huán)境,所以mcp需要一個解決方案來更好的管理python的虛擬環(huán)境,此時uv就登場了。

使用了uv,直接執(zhí)行uv run就可以了,uv工具自動幫我們維護了虛擬環(huán)境,并使用了指定環(huán)境來運行我們的服務端代碼,一切問題都解決啦!

而且,mcp強制使用uv,也進一步規(guī)范了使用python編寫mcp server的格式,再也不用擔心某些開源python項目的根目錄下連requirements.txt都沒有的尷尬情況了。

以上就是使用uv管理python虛擬環(huán)境的流程步驟的詳細內容,更多關于uv管理python虛擬環(huán)境的資料請關注腳本之家其它相關文章!

相關文章

  • Python3.8中使用f-strings調試

    Python3.8中使用f-strings調試

    這篇文章主要介紹了Python3.8中使用f-strings調試的相關知識,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • Python+matplotlib實現(xiàn)簡單曲線的繪制

    Python+matplotlib實現(xiàn)簡單曲線的繪制

    Matplotlib是Python的繪圖庫,它能讓使用者很輕松地將數據圖形化,并且提供多樣化的輸出格式。本文將利用matplotlib繪制簡單的曲線圖,感興趣的朋友可以學習一下
    2022-04-04
  • Python中八種數據導入方法總結

    Python中八種數據導入方法總結

    數據分析過程中,需要對獲取到的數據進行分析,往往第一步就是導入數據。導入數據有很多方式,不同的數據文件需要用到不同的導入方式,相同的文件也會有幾種不同的導入方式。下面總結幾種常用的文件導入方法
    2022-11-11
  • python 接口_從協(xié)議到抽象基類詳解

    python 接口_從協(xié)議到抽象基類詳解

    下面小編就為大家?guī)硪黄猵ython 接口_從協(xié)議到抽象基類詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • Python?UnicodedecodeError編碼問題解決方法匯總

    Python?UnicodedecodeError編碼問題解決方法匯總

    本文主要介紹了Python?UnicodedecodeError編碼問題解決方法匯總,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • Python OpenCV之常用濾波器使用詳解

    Python OpenCV之常用濾波器使用詳解

    OpenCV中常用的幾種濾波器有:均值濾波器、中值濾波器、高斯濾波器、雙邊濾波器,本文將通過示例詳細講解這幾種濾波器的使用,需要的可以參考一下
    2022-04-04
  • Python建立Map寫Excel表實例解析

    Python建立Map寫Excel表實例解析

    這篇文章主要介紹了Python建立Map寫Excel表實例解析,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • PyQt4 treewidget 選擇改變顏色,并設置可編輯的方法

    PyQt4 treewidget 選擇改變顏色,并設置可編輯的方法

    今天小編就為大家分享一篇PyQt4 treewidget 選擇改變顏色,并設置可編輯的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • Python實現(xiàn)數據庫表的監(jiān)控警告的項目實踐

    Python實現(xiàn)數據庫表的監(jiān)控警告的項目實踐

    本文主要介紹了使用Python 實現(xiàn)對數據庫表的監(jiān)控告警功能, 并將告警信息通過釘釘機器人發(fā)送到釘釘群,具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • Python屬性和內建屬性實例解析

    Python屬性和內建屬性實例解析

    這篇文章主要介紹了Python屬性和內建屬性實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01

最新評論