python激活虛擬環(huán)境(venv)的實(shí)現(xiàn)
當(dāng)激活 Python 的虛擬環(huán)境(venv)時(shí),激活腳本會(huì)對(duì)系統(tǒng)環(huán)境進(jìn)行一系列臨時(shí)修改,讓終端的 Python 和相關(guān)工具使用虛擬環(huán)境中的版本和依賴。這些操作不會(huì)永久改變系統(tǒng)環(huán)境,只在當(dāng)前終端會(huì)話中生效。
激活虛擬環(huán)境的操作詳解
1. 修改 PATH 環(huán)境變量
激活腳本會(huì)將虛擬環(huán)境的 bin(Linux/MacOS)或 Scripts(Windows)目錄添加到環(huán)境變量 PATH 的開(kāi)頭。
這樣,虛擬環(huán)境中的 python 和 pip 等工具會(huì)被優(yōu)先找到并執(zhí)行,而不是系統(tǒng)全局的版本。
修改后的 PATH 可能類似于:
PATH=<venv_path>/bin:$PATH # Linux/MacOS PATH=<venv_path>\Scripts;%PATH% # Windows
例如,運(yùn)行 python 時(shí),實(shí)際執(zhí)行的是虛擬環(huán)境中的 python 二進(jìn)制文件。
2. 設(shè)置 VIRTUAL_ENV 環(huán)境變量
激活腳本會(huì)設(shè)置一個(gè) VIRTUAL_ENV 環(huán)境變量,指向虛擬環(huán)境的根目錄,例如:
VIRTUAL_ENV=/path/to/venv
這個(gè)變量可以被一些工具(如 IDE 或腳本)用來(lái)檢測(cè)當(dāng)前是否處于虛擬環(huán)境中。
3. 修改終端提示符(Prompt)
激活腳本會(huì)修改終端的提示符(例如 PS1),在原有提示符前面添加虛擬環(huán)境的名稱,以提醒用戶當(dāng)前處于虛擬環(huán)境中:
(venv) user@hostname:~/project$
這是通過(guò)調(diào)整 Shell 環(huán)境變量(如 PS1)實(shí)現(xiàn)的。
4. 使用虛擬環(huán)境中的 python 和 pip
激活后,python 和 pip 命令都會(huì)指向虛擬環(huán)境中的可執(zhí)行文件。例如:
which python # Linux/MacOS # 輸出: /path/to/venv/bin/python where python # Windows # 輸出: C:\path\to\venv\Scripts\python.exe
安裝的 Python 庫(kù)會(huì)被放到虛擬環(huán)境的 site-packages 目錄中,而不是系統(tǒng)全局目錄。
5. 加載虛擬環(huán)境的依賴
- 虛擬環(huán)境內(nèi)的 Python 自帶一個(gè)隔離的
sys.path,該路徑只包含虛擬環(huán)境中的site-packages目錄。 - 激活虛擬環(huán)境后,所有導(dǎo)入的庫(kù)(
import)都只會(huì)來(lái)自虛擬環(huán)境的依賴。
激活腳本實(shí)現(xiàn)方式
- Linux/MacOS:
激活腳本是一個(gè) Shell 腳本,路徑為<venv>/bin/activate。 - Windows:
Windows 提供多個(gè)激活腳本:<venv>\Scripts\activate.bat(適用于 CMD)。<venv>\Scripts\Activate.ps1(適用于 PowerShell)。
這些腳本的主要邏輯是修改 PATH 和其他環(huán)境變量。
總結(jié)
激活虛擬環(huán)境的核心是通過(guò)調(diào)整終端的環(huán)境變量來(lái)切換到隔離的 Python 環(huán)境,從而使用虛擬環(huán)境中的依賴和工具,而不影響系統(tǒng)全局環(huán)境。
到此這篇關(guān)于python激活虛擬環(huán)境(venv)的文章就介紹到這了,更多相關(guān)python激活虛擬環(huán)境 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
對(duì)python 矩陣轉(zhuǎn)置transpose的實(shí)例講解
下面小編就為大家分享一篇對(duì)python 矩陣轉(zhuǎn)置transpose的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
Python可視化學(xué)習(xí)之seaborn調(diào)色盤(pán)
seaborn是在matplotlib基礎(chǔ)上封裝的,所以matplotlib的調(diào)色盤(pán)seaborn都可以使用。本文系統(tǒng)介紹seaborn調(diào)色盤(pán),相較于matplotlib,有諸多不同,需要的可以參考一下2022-02-02
Python如何操作docker redis過(guò)程解析
這篇文章主要介紹了Python如何操作docker redis過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
解決python 使用openpyxl讀寫(xiě)大文件的坑
這篇文章主要介紹了解決python 使用openpyxl讀寫(xiě)大文件的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03

