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功能更加強大,可以更加方便得進行包管理。