Python內(nèi)置venv虛擬環(huán)境工具的使用完全指南
venv 是 Python 3.3 + 自帶的內(nèi)置虛擬環(huán)境工具,無需額外安裝,核心作用是為不同 Python 項目創(chuàng)建隔離的運行環(huán)境,避免依賴包版本沖突。下面詳細(xì)講解它的創(chuàng)建、查看、激活、退出等核心操作,同時覆蓋不同系統(tǒng)的差異。
一、前提準(zhǔn)備
確保你的系統(tǒng)已安裝 Python 3.3+(可通過 python3 --version 或 python --version 驗證)。部分 Linux 系統(tǒng)(如 Ubuntu)默認(rèn)未安裝 venv 模塊,需先執(zhí)行以下命令安裝依賴:
# Ubuntu/Debian系列 sudo apt update && sudo apt install -y python3-venv
二、核心操作詳解
1. 創(chuàng)建虛擬環(huán)境
(1)基礎(chǔ)創(chuàng)建(默認(rèn)隔離模式)
命令格式:
# 基礎(chǔ)命令:在當(dāng)前目錄創(chuàng)建名為【環(huán)境名】的虛擬環(huán)境(默認(rèn)不繼承系統(tǒng)全局包) python3 -m venv 環(huán)境名
示例
# 創(chuàng)建名為my_project_venv的虛擬環(huán)境(隔離模式) python3 -m venv my_project_venv
說明:執(zhí)行命令后,當(dāng)前目錄會生成與 “環(huán)境名” 同名的文件夾,包含 Python 解釋器、pip 工具、依賴包存儲目錄等。默認(rèn)情況下,虛擬環(huán)境是完全隔離的,不會使用系統(tǒng)全局安裝的 Python 包,所有依賴需重新通過 pip 安裝。
若系統(tǒng)存在多個 Python 版本(如 Python3.8、Python3.10),可指定具體版本創(chuàng)建:
python3.8 -m venv my_project_venv_38 # 使用Python3.8創(chuàng)建虛擬環(huán)境 python3.10 -m venv my_project_venv_310 # 使用Python3.10創(chuàng)建虛擬環(huán)境
(2)帶 --system-site-packages 參數(shù)創(chuàng)建(繼承系統(tǒng)全局包)
參數(shù)含義:
--system-site-packages 是 venv 的核心可選參數(shù),作用是讓創(chuàng)建的虛擬環(huán)境繼承系統(tǒng)全局 Python 環(huán)境中已安裝的包(如系統(tǒng)全局安裝的 numpy、tensorflow 等),避免重復(fù)下載大型依賴包,節(jié)省磁盤空間和時間。
適用場景:
- 系統(tǒng)已全局安裝某個大型庫(如深度學(xué)習(xí)框架、科學(xué)計算庫),多個項目需共用該庫,無需重復(fù)安裝;
- 部分庫依賴系統(tǒng)底層環(huán)境(如硬件驅(qū)動相關(guān)包),全局安裝后需在虛擬環(huán)境中直接使用。
命令格式與示例:
# 帶系統(tǒng)包繼承的創(chuàng)建命令 python3 -m venv --system-site-packages 環(huán)境名 # 示例:創(chuàng)建繼承系統(tǒng)全局包的虛擬環(huán)境(命名建議帶標(biāo)識,方便區(qū)分) python3 -m venv --system-site-packages my_project_venv_with_global
關(guān)鍵注意事項:
- 繼承時機:僅在虛擬環(huán)境創(chuàng)建時同步系統(tǒng)全局包,后續(xù)在系統(tǒng)全局安裝的新包,不會自動同步到已創(chuàng)建的虛擬環(huán)境(需重新創(chuàng)建或手動在虛擬環(huán)境中安裝);
- 版本優(yōu)先級:虛擬環(huán)境中通過 pip 安裝的包,優(yōu)先級高于繼承的系統(tǒng)全局包(即若虛擬環(huán)境和系統(tǒng)全局安裝了同一包的不同版本,會優(yōu)先使用虛擬環(huán)境中的版本);
- 兼容性風(fēng)險:若系統(tǒng)全局包版本與項目需求沖突,可能導(dǎo)致項目報錯,此時建議使用基礎(chǔ)隔離模式創(chuàng)建虛擬環(huán)境,單獨安裝適配版本的依賴。
2. 查看虛擬環(huán)境
核心邏輯:venv 創(chuàng)建的虛擬環(huán)境本質(zhì)是普通文件夾,沒有專屬的查詢命令,需通過系統(tǒng)的文件查詢指令查看。
不同系統(tǒng)操作:
| 系統(tǒng)類型 | 查看命令 | 說明 |
|---|---|---|
| Linux/macOS | ls 目錄路徑(默認(rèn)當(dāng)前目錄直接輸入 ls) | 列出指定目錄下的文件夾,虛擬環(huán)境文件夾即為已創(chuàng)建的環(huán)境(如 my_project_venv) |
| Windows(CMD) | dir 目錄路徑(默認(rèn)當(dāng)前目錄直接輸入 dir) | 列出當(dāng)前目錄下的文件夾 / 文件,可見虛擬環(huán)境文件夾 |
| Windows(PowerShell) | Get-ChildItem(簡寫 gci) | 效果同 dir,更簡潔的 PowerShell 指令 |
示例(Linux/macOS):
# 查看當(dāng)前目錄下的虛擬環(huán)境 ls # 輸出:my_project_venv my_project_venv_with_global (兩個虛擬環(huán)境文件夾) # 查看指定目錄下的虛擬環(huán)境(如~/projects/venvs/) ls ~/projects/venvs/
3. 激活虛擬環(huán)境
激活后,終端會顯示虛擬環(huán)境名稱前綴(如 (my_project_venv)),此時通過 pip 安裝的依賴會僅存于該環(huán)境(繼承模式下,新增依賴仍安裝在虛擬環(huán)境內(nèi),不影響系統(tǒng)全局)。
不同系統(tǒng)激活命令:
| 系統(tǒng)類型 | 激活命令 |
|---|---|
| Linux/macOS | source 環(huán)境名 /bin/activate(示例:source my_project_venv_with_global/bin/activate) |
| Windows(CMD) | 環(huán)境名 \Scripts\activate.bat(示例:my_project_venv_with_global\Scripts\activate.bat) |
| Windows(PowerShell) | .\ 環(huán)境名 \Scripts\Activate.ps1(示例:.\my_project_venv_with_global\Scripts\Activate.ps1) |
激活成功標(biāo)識:終端前綴會新增 (環(huán)境名),例如:
- Linux/macOS:
(my_project_venv_with_global) user@localhost:~$ - Windows:
(my_project_venv_with_global) C:\Users\XXX\>
驗證激活狀態(tài)(可選):
# 查看當(dāng)前Python路徑(指向虛擬環(huán)境內(nèi)的Python解釋器) which python3 # Linux/macOS where python # Windows # 查看當(dāng)前pip路徑(指向虛擬環(huán)境內(nèi)的pip) which pip3 # Linux/macOS where pip # Windows # 驗證繼承的系統(tǒng)包(繼承模式下執(zhí)行,可看到系統(tǒng)全局安裝的包) pip list # 列出虛擬環(huán)境中的所有包(含繼承的系統(tǒng)包和后續(xù)安裝的包)
4. 退出虛擬環(huán)境
命令(所有系統(tǒng)通用):在已激活虛擬環(huán)境的終端中,直接輸入以下命令,無需額外參數(shù):
deactivate
退出成功標(biāo)識:終端前綴的 (環(huán)境名) 消失,恢復(fù)到系統(tǒng)默認(rèn)終端樣式,此時操作會回到系統(tǒng)全局 Python 環(huán)境。
三、補充操作:刪除虛擬環(huán)境
venv 虛擬環(huán)境是普通文件夾,直接刪除對應(yīng)文件夾即可(刪除后不可恢復(fù),需謹(jǐn)慎操作):
| 系統(tǒng)類型 | 刪除命令 / 操作 |
|---|---|
| Linux/macOS | rm -rf 環(huán)境名(示例:rm -rf my_project_venv_with_global) |
| Windows | 手動刪除環(huán)境文件夾,或在 CMD/PowerShell 中執(zhí)行 rd /s/q 環(huán)境名(示例:rd /s/q my_project_venv_with_global) |
四、核心總結(jié)
| 操作 | 命令格式 | 關(guān)鍵說明 |
|---|---|---|
| 基礎(chǔ)隔離模式創(chuàng)建 | python3 -m venv 環(huán)境名 | 完全隔離系統(tǒng)全局包,依賴需重新安裝,無版本沖突風(fēng)險 |
| 繼承系統(tǒng)包創(chuàng)建 | python3 -m venv --system-site-packages 環(huán)境名 | 繼承系統(tǒng)全局包,節(jié)省空間,注意版本兼容性 |
| 激活虛擬環(huán)境 | 按系統(tǒng)選擇對應(yīng)命令(如 Linux:source 環(huán)境名 /bin/activate) | 激活后終端帶環(huán)境名前綴,操作僅作用于當(dāng)前環(huán)境 |
| 退出虛擬環(huán)境 | deactivate | 所有系統(tǒng)通用,退出后回到全局 Python 環(huán)境 |
| 查看虛擬環(huán)境 | ls(Linux/macOS)/ dir(Windows) | 虛擬環(huán)境本質(zhì)是文件夾,通過系統(tǒng)命令查看 |
| 刪除虛擬環(huán)境 | rm -rf 環(huán)境名(Linux/macOS)/rd/s /q 環(huán)境名(Windows) | 直接刪除文件夾,需先退出虛擬環(huán)境,刪除后不可恢復(fù) |
venv 輕量、無額外依賴,是簡單 Python 項目環(huán)境隔離的首選工具。基礎(chǔ)隔離模式適合大多數(shù)場景,--system-site-packages 參數(shù)則為大型依賴復(fù)用提供了便捷方案,可根據(jù)項目需求靈活選擇~
到此這篇關(guān)于Python內(nèi)置venv虛擬環(huán)境工具的使用完全指南的文章就介紹到這了,更多相關(guān)Python venv虛擬環(huán)境內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pytorch排查loss值出現(xiàn)nan的情況及解決
在實驗室訓(xùn)練中,損失值出現(xiàn)nan是因條件篩選導(dǎo)致空列表,觸發(fā)torch.log()錯誤,通過包裹訓(xùn)練代碼快速定位問題,最終解決方案是添加1e-7常量確保數(shù)值穩(wěn)定性,避免計算異常2025-09-09
python GUI庫圖形界面開發(fā)之PyQt5樹形結(jié)構(gòu)控件QTreeWidget詳細(xì)使用方法與實例
這篇文章主要介紹了python GUI庫圖形界面開發(fā)PyQt5樹形結(jié)構(gòu)控件QTreeWidget詳細(xì)使用方法與實例,需要的朋友可以參考下2020-03-03
Python&Matlab實現(xiàn)螞蟻群算法求解最短路徑問題的示例
本文主要介紹了Python&Matlab實現(xiàn)螞蟻群算法求解最短路徑問題的示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03
快速掌握python權(quán)限功能設(shè)計實戰(zhàn)指南
在處理權(quán)限控制時,裝飾器能幫助我們以一種統(tǒng)一且簡潔的方式管理不同用戶對系統(tǒng)資源的訪問權(quán)限,本文將通過幾個簡單的示例逐步展示如何利用Python裝飾器實現(xiàn)從基礎(chǔ)到復(fù)雜的權(quán)限控制功能2024-01-01

