1. 程式人生 > 實用技巧 >用conda建立python虛擬環境

用conda建立python虛擬環境

anaconda是十分方便的python全家桶,除此之外,anaconda還可以創建出python虛擬環境。可以說是十分強大了。


之前,我整理了一篇關於pip建立虛擬環境的博文:《pip建立虛擬環境

當然,學會pip建立虛擬環境和conda建立虛擬環境的效果都是一樣。所以掌握其一就行了,或者根據實際情況使用其中的一種。

首先要明白為什麼要建立虛擬環境

我們經常需要復現別人的工程,不過每個開發者所使用的開發環境不盡相同,有的使用python2,有的使用python3,有的使用tf,有的又使用pytorch等等。那我們是否需要把所有的模組都裝好呢?

答案是可以的,不過你無法安裝多個版本的tf,如果你需要復現的工程是基於tensorflow 1.4.0的,而你自己的版本是1.9.0,是否要降版本來營造和人家一樣的環境呢?是否每次都要通過換自己本地的版本以達到工程的相容性呢?

虛擬環境可以很好地緩解這個尷尬


我們在伺服器上下載好anaconda以後,直接用

sh Anaconda*.sh

就可以完成anaconda的安裝,記住需要配置好anaconda的環境變數。方法如《Linux系統設定環境變數

設定好以後,可以檢視conda下面安裝了哪些模組:

conda list

和pip list的用法是一樣的,我們可以看到詳細的模組資訊。


conda安裝虛擬環境

conda create -n my_env_name python=3.6

這樣就建立了一個名字為my_env_name,基於python版本3.6的一個虛擬環境了。注意,這裡和pip建立的虛擬環境不同,pip建立的虛擬環境會直接在當前目錄下生成一個虛擬環境的目錄,啟用虛擬環境也需要指定這個目錄才行。而conda安裝的虛擬環境,只會把虛擬環境的目錄生成在anaconda安裝目錄下的env目錄下

。所以,conda建立的虛擬環境有一個很大的優點就是不用指定虛擬env的路徑,不過前提是你需要把conda的環境變數早早設定好。

我們看看conda虛擬環境的啟用指令碼:

source activate my_env_name

啟用之後,命令列的最前面就會出現虛擬環境的名字如下:

(my_env_name)wozuishuai@ak47-ml:~$

出現了前面那個小括號就代表以及進入了虛擬環境,那我們就可以用conda隨便裝模組了,只會影響到你的虛擬環境。

conda install -n my_env_name [package]

在這裡,我們可以明顯知道什麼時候該用conda建立虛擬環境以及什麼時候該用pip建立虛擬環境。

當我們覺得這個虛擬環境可能用得比較多,適用其他工程的時候,我們可以用conda來建立。這樣能夠全域性照顧,不需要每次指定路徑。

當我們覺得這個虛擬環境也許只在這個工程下用到,我們就用pip來建立,這樣不容易發生env目錄下的命名衝突,而且每次開啟工程目錄可以看到虛擬環境的目錄躺在列表裡,你就知道需要先啟用虛擬環境再run你的程式碼了。

如果需要退出虛擬環境,可以用以下指令碼:

source deactivate

檢視Conda環境下所有的虛擬環境

conda info --envs


刪除Conda虛擬環境

conda remove -n my_env_name --all

my_env_name對應的就是要刪除的虛擬環境名稱


使用檔案直接配置虛擬環境的模組包

我們可以對虛擬環境中所需要的模組列一個心願列表,比如使用yml檔案來列:

  1. name: my_env_name
  2. dependencies:
  3. - python=3.6
  4. - pytest
  5. - keras
  6. - tqdm
  7. - Pillow
  8. - pip:
  9. - tensorflow

把上述內容放在yaml檔案裡,比如命名為env_config.yml

那我們想直接生成這麼一個環境只需要:

conda env create -f env_config.yml

然後,用同樣的方式啟用虛擬環境就可以了。