一、背景
最近在學習python,發現在本地搭建python環境的時候,要是想要同時搭建不同python版本的環境,就比較麻煩,很容易就出現衝突了,很是頭疼。然後光明就出現這山重水複疑無路的時候,同事給我推薦了包管理以及環境管理神器:Anaconda。
說明:建議你在自己的電腦上將下面的步驟親自跟著敲一遍。雖然你不一定能一次性把這些命令全部記住,但是不用擔心,我們沒必要把所有的命令都一次性全部記住,隨著我們使用它們的頻率越來越高,就會漸漸的都記在腦海裡了。實在記不住的,要用的時候再來這裡查也是可以的。現在我們最重要要做到的就是跟著下面步驟操作並理解了每一步是幹啥的。
二、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?
Anaconda 可用於多個平臺( Mac OS X 、Windows和 Linux)。我們可以在它的官網找到安裝程式以及安裝說明。根據作業系統的位數(是32位還是64位)選擇對應的版本下載。(Anaconda已不再支援Windows XP).
官網地址:https://www.anaconda.com/download/
如果官網地址網速太慢無法下載,可以在我公眾號:[阿豪聊乾貨],中回覆“anaconda”從網盤下載。
Anaconda 的下載檔案比較大(約 500 MB),因為它附帶了 Python 中最常用的資料科學包。
如果計算機上已經安裝了 Python,安裝不會對你有任何影響。實際上,指令碼和程式使用的預設 Python 是 Anaconda 附帶的 Python。
注意:如果你是windows 10系統,注意在安裝Anaconda軟體的時候,右擊安裝軟體→選擇以管理員的身份執行。
安裝完成後,在windows上按下圖開啟 Anaconda Prompt ( Mac 下的終端就整合了Anaconda Prompt),後文我們會將Anaconda Prompt統一稱為“終端”。
注意:如果你是windows 10系統,按下圖操作
若你是win10系統,並且沒有按上圖開啟,在控制檯中會報如下錯誤資訊:
若安裝後在Anaconda Prompt中無法使用Conda命令,解決方法傳送門: https://zhuanlan.zhihu.com/p/34337889
如果Anaconda Prompt中可以使用conda命令,接著下面繼續操作:
首先配置下載包使用清華倉庫映象,這樣更新會快一些:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
為了避免後面使用報錯,你需要先更新下所有包。在終端輸入更新所有包的命令:
conda upgrade --all
並在提示是否更新的時候輸入 y(Yes)讓更新繼續。初次安裝下的軟體包版本一般都比較老舊,因此提前更新可以避免未來不必要的問題。
如果以上命令執行後報錯,參考這裡的解決辦法:https://zhuanlan.zhihu.com/p/34337889
五、如何管理包
-
安裝包
在終端中鍵入:
conda install package_name
例如,要安裝 pandas,在終端中輸入:
conda install pandas
你還可以同時安裝多個包。類似 conda install pandas numpy 的命令會同時安裝所有這些包。conda 還會自動為你安裝依賴項。例如,scipy 依賴於 numpy,因為它使用並需要 numpy。如果你只安裝 scipy (conda install scipy),則 conda 還會安裝 numpy(如果尚未安裝的話)。
-
解除安裝包
在終端中鍵入 :
conda remove package_name
上面命令中的package_name是指你要解除安裝包的名稱,例如你想解除安裝pandas包:
conda remove pandas
-
更新包
在終端中輸入:
conda update package_name
如果想更新環境中的所有包(這樣做常常很有用),使用:
conda update --all
-
列出已安裝的包
在終端中鍵入:
conda list
-
查詢包
如果我們不知道要找的包的全名稱,我麼可以嘗試使用 conda search search_term 進行搜尋。比如,我想安裝numpy,但我不知道確切的包名稱。我們可以這樣嘗試:
conda search num
六、如何管理環境
conda 可以為我們不同的專案建立不同的執行環境,首先我們安裝nb_conda用於notebook自動關聯nb_conda的環境:
conda install nb_conda
並在提示是否更新的時候輸入 y(Yes)讓安裝繼續。
-
建立環境
在終端中使用:
conda create -n envName package_name
命令中,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命令:
conda create -n py3 python=3
當然我們也可以這樣建立環境名稱為py2,並在該環境中安裝最新版本的Python2:
conda create -n py2 python=2
因為我們的專案要求不同,有時會用Python2,還有時會用Python3。所以我們需要在自己計算機上建立這兩個環境,並分別取類似這樣的環境名稱:py2,py3。這樣我們就可以根據不同的專案輕鬆切換不同版本的python。
如果我們要安裝特定版本(例如 Python 3.5),請使用:
conda create -n py 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 上 輸入:
source deactivate
在 Windows 上,終端中輸入:
deactivate
-
共享環境
共享環境是工作中非常有用,它能讓其他開發人員一鍵安裝所有你在程式碼中使用的包,並且還能確保這些包的版本正確和你使用的一致。例如你開發了一個電商平臺資料分析系統,你要把專案提交給負責專案部署的王五讓他來給你部署專案,但是這貨並不知道你開發時都使用了哪些依賴包及python版本,這可如何是好?
這時候你就可以在當前的環境的終端中執行 conda env export -f environment.yml 或者conda env export > environment.yml命令將當前的環境以及依賴包等描述儲存到指定的YAML檔案(包括Pyhton版本以及所有依賴包的名稱和版本)。
命令中的前半部分部分 conda env export 用於輸出環境中的所有包的名稱和版本資訊(包括 Python 版本)。這樣在我們指定的路徑下可以看到匯出的環境檔案
:
我們在 GitHub 等開源倉庫上共享程式碼時,最好以這樣的方式同時建立環境檔案並將其上傳到程式碼庫中。這可以讓別人很輕鬆地安裝你的程式碼及其所有依賴項。
匯出的環境檔案,在其他電腦環境中如何使用呢?
首先在conda中進入你的環境,比如activate py3,然後在使用以下命令更新你的環境:
# 其中-f表示你要匯出檔案在本地的路徑,所以/path/to/environment.yml要換成你本地的實際路徑 conda env update -f /path/to/environment.yml
對於那些兵不使用 conda 的使用者,我通常還可以使用 pip freeze > environment.txt 匯出一個txt檔案並將其上傳到程式碼庫中。
具體操作傳送門:https://pip.pypa.io/en/stable/reference/pip_freeze/
舉個例子我們可能更容易理解這個使用場景:
首先,我們在自己電腦上的conda中將自己專案的環境及依賴匯出成environment.txt檔案:
然後我們將該檔案上傳到專案的程式碼庫中,專案其他開發人員在他的電腦上即使沒有安裝conda也能使用這個檔案來安裝和我們一樣的開發環境,他只需要在自己的電腦上進入python命令環境,而後執行如下命令就可以安裝該專案所依賴的包:
pip install -r /path/requirements.txt
其中/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的路上,我們一定能披荊斬棘,勇往直前!加油,各位~
參考資料:https://zhuanlan.zhihu.com/p/3433788