Anaconda使用總結暨部署python2和python3共存

Anaconda概述

Anaconda是一個用于科學計算的Python發行版,支持 Linux, Mac, Windows系統,提供了包管理與環境管理的功能,可以很方便地解決多版本python并存、切換以及各種第三方包安裝問題。Anaconda利用工具/命令conda來進行package和environment的管理,并且已經包含了Python和相關的配套工具。

這里先解釋下conda、anaconda這些概念的差別。conda可以理解為一個工具,也是一個可執行命令,其核心功能是包管理環境管理。包管理與pip的使用類似,環境管理則允許用戶方便地安裝不同版本的python并可以快速切換。Anaconda則是一個打包的集合,里面預裝好了conda、某個版本的python、眾多packages、科學計算工具等等,所以也稱為Python的一種發行版。其實還有Miniconda,顧名思義,它只包含最基本的內容——python與conda,以及相關的必須依賴項,對于空間要求嚴格的用戶,Miniconda是一種選擇。

進入下文之前,說明一下conda的設計理念——conda將幾乎所有的工具、第三方包都當做package對待,甚至包括python和conda自身!因此,conda打破了包管理與環境管理的約束,能非常方便地安裝各種版本python、各種package并方便地切換。

Anaconda的安裝

Anaconda的下載頁參見官網下載,Linux、Mac、Windows均支持。

安裝時,會發現有兩個不同版本的Anaconda,分別對應Python 2.7和Python3.5,兩個版本其實除了這點區別外其他都一樣。后面我們會看到,安裝哪個版本并不本質,因為通過環境管理,我們可以很方便地切換運行時的Python版本。(由于我常用的Python是2.7和3.4,因此傾向于直接安裝Python2.7對應的Anaconda)

下載后直接按照說明安裝即可。這里想提醒一點:盡量按照Anaconda默認的行為安裝——不使用root權限,僅為個人安裝,安裝目錄設置在個人主目錄下(Windows就無所謂了)。這樣的好處是,同一臺機器上的不同用戶完全可以安裝、配置自己的Anaconda,不會互相影響。

對于Mac、Linux系統,Anaconda安裝好后,實際上就是在主目錄下多了個文件夾(~/anaconda)而已,Windows會寫入注冊表。安裝時,安裝程序會把bin目錄加入PATH(Linux/Mac寫入~/.bashrc,Windows添加到系統變量PATH),這些操作也完全可以自己完成。以Linux/Mac為例,安裝完成后設置PATH的操作是

# 將anaconda的bin目錄加入PATH,根據版本不同,也可能是~/anaconda3/bin

echo 'export PATH="~/anaconda2/bin:$PATH"' >> ~/.bashrc

# 更新bashrc以立即生效

source ~/.bashrc

配置好PATH后,可以通過which conda或conda --version命令檢查是否正確。假如安裝的是Python 2.7對應的版本,運行python --version或python -V可以得到Python 2.7.12 :: Anaconda 4.1.1 (64-bit),也說明該發行版默認的環境是Python 2.7。

Conda的環境管理

Conda的環境管理功能允許我們同時安裝若干不同版本的Python,并能自由切換。對于上述安裝過程,假設我們采用的是Python 2.7對應的安裝包,那么Python 2.7就是默認的環境(默認名字是root,注意這個root不是超級管理員的意思)。

假設我們需要安裝Python 3.6,此時,我們需要做的操作如下:

# 創建一個名為python36的環境,指定Python版本是3.6(不用管是3.6.x,conda會為我們自動尋找3.6.x中的最新版本)

conda create --name python36 python=3.6

# 安裝好后,使用activate激活某個環境

activate python36 # for Windows

source activate python36 # for Linux & Mac

# 激活后,會發現terminal輸入的地方多了python36的字樣,實際上,此時系統做的事情就是把默認2.7環境從PATH中去除,再把3.6對應的命令加入PATH

# 此時,再次輸入

python --version

# 可以得到`Python 3.6.5 :: Anaconda 4.1.1 (64-bit)`,即系統已經切換到了3.6的環境

# 如果想返回默認的python 2.7環境,運行

deactivate python36 # for Windows

source deactivate python36 # for Linux & Mac

# 刪除一個已有的環境

conda remove --name python36 --all

# 創建一個名為python36的環境,指定Python版本是3.6(不用管是3.6.x,conda會為我們自動尋找3.6.x中的最新版本)

conda create --name python36 python=3.6

用戶安裝的不同python環境都會被放在目錄~/anaconda/envs下,可以在命令中運行conda info -e查看已安裝的環境,當前被激活的環境會顯示有一個星號或者括號。

說明:有些用戶可能經常使用python 3.6環境,因此直接把~/anaconda/envs/python36下面的bin或者Scripts加入PATH,去除anaconda對應的那個bin目錄。這個辦法,怎么說呢,也是可以的,但總覺得不是那么elegant……

如果直接按上面說的這么改PATH,你會發現conda命令又找不到了(當然找不到啦,因為conda在~/anaconda/bin里呢),這時候怎么辦呢?方法有二:1. 顯式地給出conda的絕對地址 2. 在python36環境中也安裝conda工具(推薦)。

Conda的包管理

Conda的包管理就比較好理解了,這部分功能與pip類似。

例如,如果需要安裝scipy:

# 安裝scipy

conda install scipy

# conda會從從遠程搜索scipy的相關信息和依賴項目,對于python 3.6,conda會同時安裝numpy和mkl(運算加速的庫)

# 查看已經安裝的packages

conda list

# 最新版的conda是從site-packages文件夾中搜索已經安裝的包,不依賴于pip,因此可以顯示出通過各種方式安裝的包

# 查看某個指定環境的已安裝包

conda list -n python36

# 查找package信息

conda search numpy

# 安裝package

conda install -n python36 numpy

# 如果不用-n指定環境名稱,則被安裝在當前活躍環境

# 也可以通過-c指定通過某個channel安裝

# 更新package

conda update -n python36 numpy

# 查看當前環境下已安裝的包

conda list

# 查看某個指定環境的已安裝包

conda list -n python36

# 查找package信息

conda search numpy


# 刪除package

conda remove -n python36 numpy

前面已經提到,conda將conda、python等都視為package,因此,完全可以使用conda來管理conda和python的版本,例如

# 更新conda,保持conda最新

conda update conda

# 更新anaconda

conda update anaconda

# 更新python

conda update python

# 假設當前環境是python 3.6, conda會將python升級為3.6.x系列的當前最新版本

# 更新conda,保持conda最新

conda update conda

# 假設當前環境是python 3.6, conda會將python升級為3.6.x系列的當前最新版本

補充:如果創建新的python環境,比如3.6,運行conda create -n python36 python=3.6之后,conda僅安裝python 3.6相關的必須項,如python, pip等,如果希望該環境像默認環境那樣,安裝anaconda集合包,只需要:


# 在當前環境下安裝anaconda包集合

conda install anaconda

# 結合創建環境的命令,以上操作可以合并為

conda create -n python36 python=3.6 anaconda

# 也可以不用全部安裝,根據需求安裝自己需要的package即可

設置國內鏡像

如果需要安裝很多packages,你會發現conda下載的速度經常很慢,因為Anaconda.org的服務器在國外。所幸的是,清華TUNA鏡像源有Anaconda倉庫的鏡像,我們將其加入conda的配置即可:

# 添加Anaconda的TUNA鏡像

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

# TUNA的help中鏡像地址加有引號,需要去掉

# 設置搜索時顯示通道地址

conda config --set show_channel_urls yes

執行完上述命令后,會生成~/.condarc(Linux/Mac)或C:UsersUSER_NAME.condarc文件,記錄著我們對conda的配置,直接手動創建、編輯該文件是相同的效果。

Anaconda具有跨平臺、包管理、環境管理的特點,因此很適合快速在新的機器上部署Python環境。總結而言,整套安裝、配置流程如下:

下載Anaconda、安裝

配置PATH(bashrc或環境變量),更改TUNA鏡像源

創建所需的不用版本的python環境

Just Try!

cheat-sheet 下載:

Conda cheat sheet

參考資料

Anaconda Homepage

Anaconda Documentation

Conda Docs

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,283評論 6 530
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 97,947評論 3 413
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,094評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,485評論 1 308
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,268評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,817評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,906評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,039評論 0 285
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,551評論 1 331
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,502評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,662評論 1 366
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,188評論 5 356
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,907評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,304評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,563評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,255評論 3 389
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,637評論 2 370

推薦閱讀更多精彩內容