最近在學習python,發現在本地搭建python環境的時候,要是想要同時搭建不同python版本的環境,就比較麻煩,很容易就出現沖突了,很是頭疼。然后光明就出現這山重水復疑無路的時候,同事給我推薦了包管理以及環境管理神器:Anaconda。
說明:建議你在自己的電腦上將下面的步驟親自跟著敲一遍。雖然你不一定能一次性把這些命令全部記住,但是不用擔心,我們沒必要把所有的命令都一次性全部記住,隨著我們使用它們的頻率越來越高,就會漸漸的都記在腦海里了。實在記不住的,要用的時候再來這里查也是可以的。現在我們最重要要做到的就是跟著下面步驟操作并理解了每一步是干啥的。
Anaconda是“蟒蛇”的意思,Nicki Minaj妮琪·米娜有首歌就叫《Anaconda》,表達像蟒蛇一樣妖嬈、性感的身體。
所以我們看下面Anaconda的官方圖標就像一個首尾相互咬住的“蟒蛇”.
三、為什么需要Anaconda?
我已在本地安裝了 Python,那我為啥還需要 Anaconda?有如下三個原因
Anaconda 中集成了很多常用數據開發包,它附帶了 Python、conda以及 150 多個其他包及其依賴項。
包管理
Anaconda 是在 conda(一個包和環境管理器)上發展出來的。
在數據分析中,我們會用到很多第三方包,而conda可以很好的幫助我們在計算機上管理這些包,包括安裝、更新和卸載包。
環境管理
比如你在一個項目中用了 Python 2,而另一個項目中使用Python 3,如果直接同時安裝兩個版本的Python可能會造成許多錯誤和混亂。這時 conda就可以幫助我們為不同的項目建立不一樣的運行環境。
還有很多項目使用的包版本不同,例如我們不可能同時安裝兩個 Numpy 版本,而conda可以幫我們為每個 Numpy 版本創建一個環境,然后不同版本的項目在對應環境中工作。
Anaconda 可用于多個平臺( Mac OS X 、Windows和 Linux)。我們可以在它的官網找到安裝程序以及安裝說明。根據操作系統的位數(是32位還是64位)選擇對應的版本下載。(Anaconda已不再支持Windows XP)
官網地址:https://www.anaconda.com/download/
如果不能忍受官網地址下載太慢,可以在我公眾號:[阿豪聊干貨],中回復“anaconda”從網盤下載.Anaconda 的安裝包比較大(約 500 MB),因為它附帶了 Python 中最常用的數據開發包。
若你的計算機上已經安裝了 Python,安裝Anaconda不會對你的計算機有任何影響。實際上,程序和腳本使用的默認 Python 就是 Anaconda 集成的 Python。
注意:若你的系統是windows 10,在安裝Anaconda的時候,要右擊安裝軟件→選擇以管理員的身份運行。
安裝完成后,在windows上按下圖打開 Anaconda Prompt ( Mac 下的終端就集成了Anaconda Prompt),后文我們會將Anaconda Prompt統一稱為“終端”。
注意:若你的系統是windows 10,請按照下圖打開Anaconda Prompt
若你是win10系統,并且沒有按上圖打開,在控制臺中會報如下錯誤信息:
若安裝后在Anaconda Prompt中無法使用Conda命令,解決方法傳送門: https://zhuanlan.zhihu.com/p/34337889
若終端中可以使用conda命令,請接著進行下面操作:
初次安裝好的軟件包版本一般都比較舊,為了避免后來使用出現不必要的異常,我們需要首先更新下所有包。在終端輸入如下命令:
接著在提示是否更新的時候輸入 y繼續進行更新。配置下載包使用清華倉庫鏡像,這樣更新會快一些:
倉庫地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
若以上命令執行出錯,解決辦法傳送門:https://zhuanlan.zhihu.com/p/34337889
五、怎么管理包?
安裝包
conda install package_name
例如,要安裝 numpy,在終端中輸入:
我們還可以同時安裝多個包。類似 conda install numpy pandas 命令會同時安裝所有指定的這些包。
conda 會自動為我們安裝包依賴項。例如,scipy 依賴于 numpy,因為它需要 numpy包。所以若我們安裝 scipy,則 conda 還會自動幫我們安裝 numpy包(已安裝的話不會重復安裝)。
卸載包
conda remove package_name
該命令中的package_name是指我們要卸載包名稱,例如我們想卸載numpy包:
更新包
conda update package_name
如果我們想更新環境中所有包(這樣做經常很有必要)使用如下命令:
列出所有已安裝的包
conda list
查找包
如果我們不知道要找的包的全名稱,我么可以嘗試使用 conda search search_term 進行搜索。比如,我想安裝numpy,但我不知道確切的包名稱。我們可以這樣嘗試:
我們知道conda 可以為不同的項目建立不一樣的運行環境,首先你要安裝nb_conda用于將notebook自動關聯到nb_conda的環境:
conda install nb_conda
并在提示是否更新的時候輸入 y 讓安裝繼續。
環境創建
命令中,envName 是我們設置環境的名稱(-n 是說該選項后的envName是我們要創建環境的名稱),package_name 是我們要安裝到將要創建的環境中的包名稱。
比如,我們要創建環境名稱為 py3 的環境并在其中安裝 python 3.5,使用如下命令 :
conda create -n py3 python=3.5
創建環境時我們可以指定要安裝在環境中的 Python 版本
當我們同時使用 Python 2.x 和 Python 3.x 中的代碼時這很有用。這就要創建具有特定版本 Python 的環境,比如創建環境名稱為py3,并安裝最新版本的Python3命令:
當然我們也可以這樣創建環境名稱為py2,并在該環境中安裝最新版本的Python2:
conda create -n py2 python=2
因為我們的項目要求不同,有時會用Python2,還有時會用Python3。所以我們需要在自己計算機上創建這兩個環境,并分別取類似這樣的環境名稱:py2,py3。這樣我們就可以根據不同的項目輕松切換不同版本的python。
如果我們要安裝特定版本(例如 Python 3.5),請使用:
進入環境
在 OSX/Linux 上我們使用 source activate my_env_name 進入環境。在 Windows 上我們使用 activate my_env_name進入環境。
進入環境后,我們會在終端提示符中看到當前環境名稱,下圖說明我們進入py3的環境(這里的py3是我們上面創建環境時自己起的名稱,你可以隨意起自己喜歡的名字)。
進入環境后,我們用conda list 來查看環境中默認安裝的幾個包:
在對應環境中安裝其他包的命令與前面一樣:
conda install package_name
不過,這種情況下我們安裝的特定包僅在該環境里才能用。
退出環境
在 OSX/Linux 上的終端中輸入:
Windows 上在終端中輸入:
deactivate
共享環境
共享環境是工作中非常有用,它能讓其他開發人員一鍵安裝所有你在代碼中使用的包,并且還能確保這些包的版本正確和你使用的一致。例如你開發了一個電商平臺數據分析系統,你要把項目提交給負責項目部署的王五讓他來給你部署項目,但是這貨并不知道你開發時都使用了哪些依賴包及python版本,這可如何是好?
這時候你就可以在當前的環境的終端中執行 conda env export -f environment.yml 或者conda env export > environment.yml命令將當前的環境以及依賴包等描述保存到指定的YAML文件(包括Pyhton版本以及所有依賴包的名稱和版本)。
命令中的前半部分部分 conda env export 用于輸出環境中的所有包的名稱和版本信息(包括 Python 版本)。這樣在我們指定的路徑下可以看到導出的環境文件
我們在 GitHub 等開源倉庫上共享代碼時,最好以這樣的方式同時創建環境文件并將其上傳到代碼庫中。這可以讓別人很輕松地安裝你的代碼及其所有依賴項。
導出環境文件后,在其他電腦環境中怎么使用呢?
首先我們在終端中進入你的環境,比如activate py3,然后再使用如下命令更新我們的環境:conda env update -f /path/to/environment.yml
操作傳送門:https://pip.pypa.io/en/stable/reference/pip_freeze/
舉個例子我們可能更容易理解這個使用場景:
首先,我們在自己電腦上的conda中將自己項目的環境及依賴導出成environment.txt 文件:
然后我們將該文件上傳到項目的代碼庫中,項目其他開發人員在他的電腦上即使沒有安裝conda也能使用這個文件來安裝和我們一樣的開發環境,他只需要在自己的電腦上進入python命令環境,而后運行如下命令就可以安裝該項目所依賴的包:
其中/path/requirements.txt是此文件在你電腦種的實際路徑。
列出環境
當我們創建的環境越來越多,我們有時候會忘記自己創建的環境名稱,這時我們用 conda env list 命令就可以列出所有已經創建的環境。
我們能看到如下環境列表,而你當前所在環境的旁邊會有一個星號。默認的環境(即當我們不選定環境時使用的環境)名稱為 root。
刪除環境
如果我們不再使用某個環境,使用如下命令刪除指定的環境:(在這里環境名為 envName)
conda env remove -n envName
最后再次說明下,我們千萬不能被上面的命令嚇到。雖然命令很多,但我們用的多了就自然記住了。我們現在要做的只是跟著上面步驟操作下,重要的是理解每一步是干啥的。回頭忘記了可以再查這個文檔。
conda的官方文檔:https://conda.io/docs/user-guide/tasks/index.html
以上就是Anaconda的全部入門內容了,相信有了它,在我們學習python的路上,我們一定能披荊斬棘,勇往直前!加油,各位~