Python內置venv虛擬環(huán)境工具的使用完全指南
venv 是 Python 3.3 + 自帶的內置虛擬環(huán)境工具,無需額外安裝,核心作用是為不同 Python 項目創(chuàng)建隔離的運行環(huán)境,避免依賴包版本沖突。下面詳細講解它的創(chuàng)建、查看、激活、退出等核心操作,同時覆蓋不同系統(tǒng)的差異。
一、前提準備
確保你的系統(tǒng)已安裝 Python 3.3+(可通過 python3 --version 或 python --version 驗證)。部分 Linux 系統(tǒng)(如 Ubuntu)默認未安裝 venv 模塊,需先執(zhí)行以下命令安裝依賴:
# Ubuntu/Debian系列 sudo apt update && sudo apt install -y python3-venv
二、核心操作詳解
1. 創(chuàng)建虛擬環(huán)境
(1)基礎創(chuàng)建(默認隔離模式)
命令格式:
# 基礎命令:在當前目錄創(chuàng)建名為【環(huán)境名】的虛擬環(huán)境(默認不繼承系統(tǒng)全局包) python3 -m venv 環(huán)境名
示例
# 創(chuàng)建名為my_project_venv的虛擬環(huán)境(隔離模式) python3 -m venv my_project_venv
說明:執(zhí)行命令后,當前目錄會生成與 “環(huán)境名” 同名的文件夾,包含 Python 解釋器、pip 工具、依賴包存儲目錄等。默認情況下,虛擬環(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 等),避免重復下載大型依賴包,節(jié)省磁盤空間和時間。
適用場景:
- 系統(tǒng)已全局安裝某個大型庫(如深度學習框架、科學計算庫),多個項目需共用該庫,無需重復安裝;
- 部分庫依賴系統(tǒng)底層環(huán)境(如硬件驅動相關包),全局安裝后需在虛擬環(huán)境中直接使用。
命令格式與示例:
# 帶系統(tǒng)包繼承的創(chuàng)建命令 python3 -m venv --system-site-packages 環(huán)境名 # 示例:創(chuàng)建繼承系統(tǒng)全局包的虛擬環(huán)境(命名建議帶標識,方便區(qū)分) python3 -m venv --system-site-packages my_project_venv_with_global
關鍵注意事項:
- 繼承時機:僅在虛擬環(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)境中的版本);
- 兼容性風險:若系統(tǒng)全局包版本與項目需求沖突,可能導致項目報錯,此時建議使用基礎隔離模式創(chuàng)建虛擬環(huán)境,單獨安裝適配版本的依賴。
2. 查看虛擬環(huán)境
核心邏輯:venv 創(chuàng)建的虛擬環(huán)境本質是普通文件夾,沒有專屬的查詢命令,需通過系統(tǒng)的文件查詢指令查看。
不同系統(tǒng)操作:
| 系統(tǒng)類型 | 查看命令 | 說明 |
|---|---|---|
| Linux/macOS | ls 目錄路徑(默認當前目錄直接輸入 ls) | 列出指定目錄下的文件夾,虛擬環(huán)境文件夾即為已創(chuàng)建的環(huán)境(如 my_project_venv) |
| Windows(CMD) | dir 目錄路徑(默認當前目錄直接輸入 dir) | 列出當前目錄下的文件夾 / 文件,可見虛擬環(huán)境文件夾 |
| Windows(PowerShell) | Get-ChildItem(簡寫 gci) | 效果同 dir,更簡潔的 PowerShell 指令 |
示例(Linux/macOS):
# 查看當前目錄下的虛擬環(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)境內,不影響系統(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) |
激活成功標識:終端前綴會新增 (環(huán)境名),例如:
- Linux/macOS:
(my_project_venv_with_global) user@localhost:~$ - Windows:
(my_project_venv_with_global) C:\Users\XXX\>
驗證激活狀態(tài)(可選):
# 查看當前Python路徑(指向虛擬環(huán)境內的Python解釋器) which python3 # Linux/macOS where python # Windows # 查看當前pip路徑(指向虛擬環(huán)境內的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
退出成功標識:終端前綴的 (環(huán)境名) 消失,恢復到系統(tǒng)默認終端樣式,此時操作會回到系統(tǒng)全局 Python 環(huán)境。
三、補充操作:刪除虛擬環(huán)境
venv 虛擬環(huá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) |
四、核心總結
| 操作 | 命令格式 | 關鍵說明 |
|---|---|---|
| 基礎隔離模式創(chuàng)建 | python3 -m venv 環(huán)境名 | 完全隔離系統(tǒng)全局包,依賴需重新安裝,無版本沖突風險 |
| 繼承系統(tǒng)包創(chuàng)建 | python3 -m venv --system-site-packages 環(huán)境名 | 繼承系統(tǒng)全局包,節(jié)省空間,注意版本兼容性 |
| 激活虛擬環(huán)境 | 按系統(tǒng)選擇對應命令(如 Linux:source 環(huán)境名 /bin/activate) | 激活后終端帶環(huán)境名前綴,操作僅作用于當前環(huán)境 |
| 退出虛擬環(huán)境 | deactivate | 所有系統(tǒng)通用,退出后回到全局 Python 環(huán)境 |
| 查看虛擬環(huán)境 | ls(Linux/macOS)/ dir(Windows) | 虛擬環(huán)境本質是文件夾,通過系統(tǒng)命令查看 |
| 刪除虛擬環(huán)境 | rm -rf 環(huán)境名(Linux/macOS)/rd/s /q 環(huán)境名(Windows) | 直接刪除文件夾,需先退出虛擬環(huán)境,刪除后不可恢復 |
venv 輕量、無額外依賴,是簡單 Python 項目環(huán)境隔離的首選工具?;A隔離模式適合大多數(shù)場景,--system-site-packages 參數(shù)則為大型依賴復用提供了便捷方案,可根據(jù)項目需求靈活選擇~
到此這篇關于Python內置venv虛擬環(huán)境工具的使用完全指南的文章就介紹到這了,更多相關Python venv虛擬環(huán)境內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
詳解Selenium+PhantomJS+python簡單實現(xiàn)爬蟲的功能
這篇文章主要介紹了詳解Selenium+PhantomJS+python簡單實現(xiàn)爬蟲的功能,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-07-07
Python梯度提升庫XGBoost解決機器學習問題使用探究
XGBoost是一個流行的梯度提升庫,特別適用于解決各種機器學習問題,它在性能和速度上表現(xiàn)出色,常被用于分類、回歸、排序、推薦系統(tǒng)等應用,本文將介紹XGBoost的基本原理、核心功能以及一些詳細的示例代碼2024-01-01

