1. 程式人生 > 其它 >Python中的虛擬環境

Python中的虛擬環境

技術標籤:pythonpython

1. 簡介

介紹

Python虛擬環境(virtual environments)類似於一個沙箱,在虛擬環境中會使用獨立的模組、庫,而不會去使用系統的 site-packages 目錄下的模組和庫。

使用場景

在Python中概要使用虛擬環境的場景有很多,比如如果要在一個Python版本下執行多個服務,但是每個服務需要使用的模組和庫的版本都不相同。或者你想為你的每個Python專案都配置獨立的模組和庫,不想它們互相之間影響。這個時候虛擬環境就派上了用場。

原理

虛擬環境主要是利用了作業系統中環境變數以及程序間環境隔離的特性。其中 PATH 是很重要的環境變數,用於為作業系統和程式提供可執行檔案的訪問路徑,例如寫一個程式 a.exe

,存放在 D:\ 中,在命令列中執行 a.exe ,會得到提示“ 無法找到程式 a.exe”,為了讓系統找到,可以將 D:\ 路徑加入到 PATH 環境變數中,當輸入 a.exe 時,作業系統就可以成功執行。
Python 虛擬環境就是利用這個特性構建的,在啟用虛擬環境之時,啟用指令碼會將當前命令列程式的 PATH 修改為虛擬環境的,這樣執行命令就會在被修改的 PATH 中查詢,從而避免了原本 PATH 可以找到的命令,從而實現了 Python 環境的隔離。

2. 建立

virtualenv

在Python3.3版本之前,只能通過 virtualenv 這個工具來建立虛擬環境。
首先要安裝這個工具

pip install virtualenv

安裝完成後,我們在需要虛擬環境的目錄下,執行這條命令,其中 envName 是你建立的虛擬環境的名字,下面的程式碼以 testEnv 為例

# virtualenv envName
virtualenv testEnv

這樣我們的虛擬環境 testEnv 就建立好了
在建立虛擬環境的時候,命令 virtualenv 也有可選引數,下面介紹幾個常用引數,其他引數可使用 virtualenv -h 進行檢視。
• -p py | --python py , 指定虛擬環境Python的版本
• -c | --clear , 如果建立虛擬環境的目錄已經有了其他虛擬環境,將其清除掉重建

• --system-site-packages , 使用全域性的 site-packages 作為虛擬環境初始的包和庫
• --no-pip , 新建的虛擬環境不帶pip包管理工具
• --pip version , 指定pip版本

venv

在Python3.3版本之後,venv 模組成為Python標準庫的一部分,也是用來建立Python虛擬環境的。

# python -m venv envName
python -m venv testEnv

而 venv 模組的引數相比於 virtualenv 少了一些,主要有
• --clear , 同上
• --without-pip , 同上面的 --no-pip
有一點需要注意的是,因為 venv 是依附於一個 Python 解析器建立的,所以不需要指定 Python 直譯器版本。

3. 啟用

在建立好虛擬環境後還需要啟用才可以使用,可以理解為將當前執行環境中的 PATH 替換為虛擬環境的。
virtualenv 和 venv 兩者的啟用方法都是一樣的,都是執行虛擬環境中的指令碼檔案
• MacOs/Linux 中的指令碼為 /bin/activate 預設指令碼檔案沒有可執行許可權,一般使用這條命令啟用

source testEnv/bin/activate

• Windows 系統中,啟用指令碼路徑是 \Scripts\activate.bat
啟用以後在命令列中發生的變化:你的命令提示符前面會顯示你的虛擬環境的名稱。
在這裡插入圖片描述

此時我們列印環境變數看一看

echo $PATH

在這裡插入圖片描述

可以看到虛擬環境的指令碼目錄載入到了最前面。
4. 退出
virtualenv 和 venv 兩者退出的命令也是一樣的

deactivate

在命令列執行這條命令,就會退出至全域性環境,環境變數恢復了。
多使用虛擬環境,有時候幫助很大~