首頁 > 軟體

使用Anaconda虛擬環境管理Python版本

2020-06-16 16:32:51

1 引言

在前幾篇博文中介紹過virtualenv、virtualenvwrapper等幾個虛擬環境管理工具,本篇要介紹的anaconda也有很強大的虛擬環境管理功能,甚至相比virtualenv、virtualenvwrapper等工具,更加強大。
Anaconda是專注於資料分析的Python發行版本,包含了conda、Python等190多個科學包及其依賴項。我們本篇要介紹的anaconda虛擬環境管理就是使用其中的conda。conda是一款極為特殊的環境管理工具,之所以說它特殊,conda的設計思想——conda將幾乎所有的工具、第三方包都當做package對待,甚至包括python和conda自身!因此,conda打破了包管理與環境管理的約束,能非常方便地安裝各種版本python、各種package並方便地切換。也就是說說,在進行虛擬環境管理時,conda可以獨立於系統原有的Python版本而建立任意版本的Python直譯器,這是virtualenv、virtualenvwrapper等工具所不具備的。

2 安裝

2.1 下載

本次安裝的版本是anaconda3。先進入一個用於存放下載檔案的目錄,然後安裝anaconda:
$ cd /home/Ubuntu/download
$ wget https://repo.anaconda.com/archive/Anaconda3-2018.12-Linux-x86_64.sh

2.2 安裝與設定

如果沒有意外,上述命令結束之後,在/home/ubuntu/download目錄下會下載成功一個名為Anaconda3-2018.12-Linux-x86_64.sh的檔案。
通過以下命令正式開始安裝:
$ bash Anaconda3-2018.12-Linux-x86_64.sh
在安裝過程中,需要你允許使用協定,輸入yes即可:
Do you accept the license terms? [yes|no]
[no] >>>
Please answer 'yes' or 'no':'
>>> yes
然後輸入你希望將anaconda安裝到的目錄,例如將anaconda安裝到 /usr/bin/anaconda3:
[/home/ubuntu/anaconda3] >>> /usr/bin/anaconda3
當然,我這次安裝選擇的是預設的/home/ubuntu/anaconda3目錄中,所以直接回車即可。
輸入完成之後,系統將繼續完成安裝,知道出現如下輸出提示:
Do you wish the installer to initialize Anaconda3
in your /home/ubuntu/.bashrc ? [yes|no]
[no] >>>
這裡,你可以輸出yes。意思是,將/home/ubuntu/anaconda3下的bin目錄新增到當前使用者的環境變數設定中。如果錯過了這一步設定或者輸入的是no,你將需要進行手動設定環境變數:
$ cd ~
$ vim .bashrc
然後在最後一行輸入以下內容:
# anaconda3的設定環境
export PATH="/home/ubuntu/anaconda3/bin:$PATH"
結束上面所有步驟之後,執行一下命令讓設定生效:
$ source .bashrc

2.3 驗證安裝結果

如果上面的所有步驟都沒有意外,順利完成的話,事實上anaconda就已經安裝成功了。我們來驗證一下。
直接在命令列中輸入python,看看Python的版本:
$ python
Python 3.7.1 (default, Dec 14 2018, 19:28:38)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
可以看到,Python的版本已經與原來不一樣了。
檢視conda版本,執行命令:
$ conda --version
conda 4.5.12
輸出安裝的anaconda的的conda的版本為4.5.12。上述跡象表明,anaconda確實安裝成功。

3 環境管理

3.1 建立虛擬環境

conda create -n env_name python=version package_names
其中,引數-n是指接下來的引數指定虛擬環境名,與--name等效,所以python36即為指定的將要建立的虛擬環境名。python=version是為虛擬環境指定Python版本,指定版本後,conda會安裝該版本下最新的子版本,例如指定版本為3.6時,conda將會安裝最新的3.6.x版本。package_names是要為新的虛擬環境建立時就安裝的包,這裡也可以不安裝其他包,省略這一引數,在後續使用虛擬環境時安裝第三方包。
例:建立一個虛擬環境,Python版本為3.6,虛擬環境名為python36
conda create --name python36 python=3.6

3.2 檢視虛擬環境

conda env list
執行後,結果如下:
# conda environments:
#
base * /home/chb/anaconda3
python36 /home/chb/anaconda3/envs/python36
上述結果列出了當前系統中所有conda建立的虛擬環境,即環境所在目錄。base是安裝anaconda時指定安裝的Python環境。型號(*)是指系統當前說還是用的Python環境。

3.3 啟用虛擬環境

conda activate env_name
例如:進入剛剛建立的虛擬環境python36
conda activate python36
如果進入到虛擬環境python36,之後的命令列抬頭都會有一個“(python36)”的字樣。

3.4 退出虛擬環境

退出虛擬環境時並不需要指定虛擬環境名,直接執行下行命令即可:
conda deactivate

3.5 共用虛擬環境

什麼是共用虛擬環境呢?當我們在本機上開發了一套程式碼,然後將程式碼上傳到github或者發給專案組其他人,這是別人可不知道我們開發的程式碼上面用到了哪些依賴,conda提供了方便得功能將虛擬環境中所有依賴包統一匯出一個組態檔中,在別的機器上使用這套程式碼時,根據conda匯出的組態檔重建虛擬環境即可,這就是共用虛擬環境功能。在多人共同作業開發及開源的情況下,共用虛擬環境無疑是一個非常實用的功能。
先來匯出依賴到組態檔:
conda env export --file python36_env.yml
environment.yaml是匯出依賴的目標檔案,執行命令後,當前目錄下就回生成一個environment.yaml檔案,包含了所有依賴資訊。
根據組態檔建立虛擬環境:
conda env create -f /home/chb/code/python36_env.yml
執行上述命令後,在新機器上也會建立一個一模一樣的虛擬環境。
3.6 刪除虛擬環境
 conda remove -n python36 --all 
或者
conda env remove -n python36

4 包管理

4.1 安裝包

conda install package_name
或者
pip install package_name

4.2 列出所有包

conda list

4.3 更新包

conda update package_name
如果想要一次性更新所有包:
conda update --all

4.4 查詢包

conda search keyword
例如:我們要安裝pandas,但是忘了準確名稱,可以這樣查詢:
conda search pan

4.5 刪除包

conda remove package_name

5 總結

雖然相較於virtualenv、virtualenvwrapper等工具,anaconda安裝要複雜一下,但無疑anaconda功能更加強大,可以更加方便得進行包管理。

IT145.com E-mail:sddin#qq.com