Anaconda教程:最全的Python包管理工具

Anaconda + Jupyter notebook 組成了數(shù)據(jù)分析的標(biāo)準(zhǔn)環(huán)境
簡單來說,Anaconda是包管理器和環(huán)境管理器,Jupyter notebook 可以將數(shù)據(jù)分析的代碼、圖像和文檔全部組合到一個web文檔中。
接下來我詳細介紹下Anaconda,并在最后給出Jupyter notebook:
1.Anaconda是什么?
2.如何安裝?
3. 如何管理包?
4.如何管理環(huán)境?
5.Jupyter notebook如何快速上手?
不過在開始前我需要強調(diào)下,下面的步驟你要親自跟著敲一遍并在自己的電腦上實踐。
你可能已經(jīng)安裝了 Python,那么為什么還需要 Anaconda?有以下3個原因:
1)Anaconda 附帶了一大批常用數(shù)據(jù)科學(xué)包,它附帶了 conda、Python 和 150 多個科學(xué)包及其依賴項。因此你可以立即開始處理數(shù)據(jù)。
2)管理包
Anaconda 是在 conda(一個包管理器和環(huán)境管理器)上發(fā)展出來的。
在數(shù)據(jù)分析中,你會用到很多第三方的包,而conda(包管理器)可以很好的幫助你在計算機上安裝和管理這些包,包括安裝、卸載和更新包。
3)管理環(huán)境
為什么需要管理環(huán)境呢?比如你在A項目中用了 Python 2,而新的項目B老大要求使用Python 3,而同時安裝兩個Python版本可能會造成許多混亂和錯誤。這時候 conda就可以幫助你為不同的項目建立不同的運行環(huán)境。
還有很多項目使用的包版本不同,比如不同的pandas版本,不可能同時安裝兩個 Numpy 版本,你要做的應(yīng)該是,為每個 Numpy 版本創(chuàng)建一個環(huán)境,然后項目的對應(yīng)環(huán)境中工作。這時候conda就可以幫你做到。
如何安裝Anaconda?
Anaconda 可用于多個平臺( Windows、Mac OS X 和 Linux)。你可以在下面地址上找到安裝程序和安裝說明。
官網(wǎng)地址:https://www.continuum.io/downloads?
根據(jù)你的操作系統(tǒng)是32位還是64位選擇對應(yīng)的版本下載。
(Anaconda已經(jīng)不支持Windows XP;同時查看自己電腦是32位還是64位,不要裝錯了。)
Anaconda 的下載文件比較大(約 500 MB),因為它附帶了 Python 中最常用的數(shù)據(jù)科學(xué)包。
如果計算機上已經(jīng)安裝了 Python,安裝不會對你有任何影響。實際上,腳本和程序使用的默認 Python 是 Anaconda 附帶的 Python。
注意:如果你是windows 10系統(tǒng),注意在安裝Anaconda軟件的時候,右擊安裝軟件→選擇以管理員的身份運行。
完成安裝后,如果你是在windows上操作,按下面圖打開 Anaconda Prompt (或者 Mac 下的終端),后面我會將Anaconda Prompt統(tǒng)一稱為“終端”。

注意:如果你是windows 10系統(tǒng),按下圖操作

如果win10系統(tǒng)沒有按上述操作,后面會報下面的錯誤信息:

可以在終端或命令提示符中鍵入 conda list,以查看你安裝的內(nèi)容。

PS:如果按上面操作后在Anaconda Prompt中都無法使用Conda命令,按以下順序的解決辦法來嘗試(正常使用的朋友忽略這一步,繼續(xù)往下):
1)檢查你是否原來安裝過Python,如果安裝過請徹底刪除Python(同時要刪除環(huán)境變量)后重裝Anaconda
2)檢查自己是否將Conda命令添加到了環(huán)境變量。
3)確保你的Anaconda安裝路徑不包含中文或其他非英語常用字符
4)經(jīng)過以上步驟還是沒有任何改善,請卸載Anaconda重裝一遍
如果Anaconda Prompt中可以使用conda命令,接著下面繼續(xù)操作。
為了避免后面使用報錯,你需要先更新下所有包。在終端輸入更新所有包的命令:
conda upgrade ? ?--all
并在提示是否更新的時候輸入 y(Yes)讓更新繼續(xù)。初次安裝下的軟件包版本一般都比較老舊,因此提前更新可以避免未來不必要的問題。
如果運行以上命令或者安裝包報下面的錯誤信息:

可以用下面的解決辦法(在終端中運行以下命令):
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
如果命令行方法添加不上,可以在“notebook工作文件夾”找到文件.condarc,
什么是你的“notebook工作文件夾”呢?
默認情況下,是你啟動Anaconda Prompt終端中的那個文件夾,比如我電腦上是下面這個文件夾(Windows為C://Users/username/.condarc,Linux/Mac為~/.condarc):

打開該文件夾,修改文件內(nèi)容如下:
(如果沒有找到.condarc,用notepad++軟件在“notebook工作文件夾”下新建一個該文件即可,并添加以下內(nèi)容)

為了方便,你可以將下面部分直接復(fù)制到上面的文件中:
channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/?
- defaults
show_channel_urls: yes
3. 如何管理包?
安裝了 Anaconda 之后,就可以很方便的管理包了(安裝,卸載,更新)。
1)安裝包
在終端中鍵入:
conda install package_name
例如,要安裝 pandas,在終端中輸入:
conda install pandas
你還可以同時安裝多個包。類似 conda install pandas numpy 的命令會同時安裝所有這些包。還可以通過添加版本號(例如 conda install numpy=1.10)來指定所需的包版本。
conda 還會自動為你安裝依賴項。例如,scipy 依賴于 numpy,因為它使用并需要 numpy。如果你只安裝 scipy (conda install scipy),則 conda 還會安裝 numpy(如果尚未安裝的話)。
2)卸載包
在終端中鍵入 :
conda remove package_names
上面命令中的package_names是指你要卸載包的名稱,例如你想卸載pandas包:conda remove pandas
3)更新包
在終端中鍵入:
conda update package_name
如果想更新環(huán)境中的所有包(這樣做常常很有用),使用:conda update --all。
4)列出已安裝的包
#列出已安裝的包
conda list
例如我已經(jīng)成功安裝了numpy和pandas這兩個常用的包。

如果不知道要找的包的確切名稱,可以嘗試使用 conda search search_term 進行搜索。例如,我知道我想安裝numpy,但我不清楚確切的包名稱。我可以這樣嘗試:conda search num。
4.如何管理環(huán)境?
conda 可以為你不同的項目建立不同的運行環(huán)境。
0)安裝nb_conda用于notebook自動關(guān)聯(lián)nb_conda的環(huán)境。

1)創(chuàng)建環(huán)境
在終端中使用:
conda create -n env_name package_names
上面的命令中,env_name 是設(shè)置環(huán)境的名稱(-n 是指該命令后面的env_name是你要創(chuàng)建環(huán)境的名稱),package_names 是你要安裝在創(chuàng)建環(huán)境中的包名稱。
例如,要創(chuàng)建環(huán)境名稱為?py3?的環(huán)境并在其中安裝 numpy,在終端中輸入 conda create -n py3 pandas。

2)創(chuàng)建環(huán)境時,可以指定要安裝在環(huán)境中的 Python 版本
當(dāng)你同時使用 Python 2.x 和 Python 3.x 中的代碼時這很有用。要創(chuàng)建具有特定 Python 版本的環(huán)境,例如創(chuàng)建環(huán)境名稱為py3,并安裝最新版本的Python3在終端中輸入:
conda create -n py3 python=3?
或也可以這樣創(chuàng)建環(huán)境名稱為py2,并安裝最新版本的Python2:
conda create -n py2 python=2
因為我做的項目不同,有時候會用到Python2,還有時候會用到Python3。所以我在自己的計算機上創(chuàng)建了這兩個環(huán)境,并分別取了這樣的環(huán)境名稱:py2,py3。這樣我可以根據(jù)不同的項目輕松使用不同版本的python。
如果你要安裝特定版本(例如 Python 3.6),請使用 conda create -n py python=3.6
3)進入環(huán)境
在 Windows 上,你可以使用 activate my_env進入。在 OSX/Linux 上使用 source activate my_env 進入環(huán)境。
進入環(huán)境后,你會在終端提示符中看到環(huán)境名稱,下面圖片是我進入py3的環(huán)境(這里的py3是我上面創(chuàng)建環(huán)境時自己起的名稱,你可以起個自己喜歡的名稱)。

進入環(huán)境后,我可以用conda list 查看環(huán)境中默認安裝的幾個包:

在環(huán)境中安裝包的命令與前面一樣:conda install package_name。
不過,這次你安裝的特定包僅在你進入環(huán)境后才可用。
3)離開環(huán)境
在 Windows 上,終端中輸入:?
deactivate
在 OSX/Linux 上 輸入:
source deactivate
4)共享環(huán)境
共享環(huán)境非常有用,它能讓其他人安裝你的代碼中使用的所有包,并確保這些包的版本正確。比如你開發(fā)了一個藥店數(shù)據(jù)分析系統(tǒng),你要提交給項目部署系統(tǒng)的王二狗來部署你的項目,但是王二狗并不知道你當(dāng)時開發(fā)時使用的是哪個python版本,以及使用了哪些包和包的版本。這怎么辦呢?
你可以在你當(dāng)前的環(huán)境中終端中使用 conda env export > environment.yaml 將你當(dāng)前的環(huán)境保存到文件中包保存為YAML文件(包括Pyhton版本和所有包的名稱)。
命令的第一部分 conda env export 用于輸出環(huán)境中的所有包的名稱(包括 Python 版本)。

在“notebook工作文件夾”下(及你在終端中上圖的路徑)可以看到導(dǎo)出的環(huán)境文件:

在 GitHub 上共享代碼時,最好同樣創(chuàng)建環(huán)境文件并將其包括在代碼庫中。這能讓其他人更輕松地安裝你的代碼的所有依賴項。
導(dǎo)出的環(huán)境文件,在其他電腦環(huán)境中如何使用呢?
首先在conda中進入你的環(huán)境,比如activate py3
然后在使用以下命令更新你的環(huán)境:
#其中-f表示你要導(dǎo)出文件在本地的路徑,所以/path/to/environment.yml要換成你本地的實際路徑
conda env update -f=/path/to/environment.yml
對于不使用 conda 的用戶,我通常還會使用 pip freeze > environment.txt 將一個 txt文件導(dǎo)出并包括在其中。
具體見這里:https://pip.pypa.io/en/stable/reference/pip_freeze/
舉個例子你可能更容易理解這個使用場景:
首先,我在自己的電腦上在conda中將項目的包導(dǎo)出成environment.txt 文件:

然后我將該文件包含在項目的代碼庫中,其他項目成員即使在他的電腦上沒有安裝conda也可以使用該文件來安裝和我一樣的開發(fā)環(huán)境:
他在自己的電腦上進入python命令環(huán)境,然后運行以下命令就可以安裝該項目需要的包:
pip install -r /path/requirements.txt
其中/path/requirements.txt是該文件在你電腦上的實際路徑。

5)列出環(huán)境
我有時候會忘記自己創(chuàng)建的環(huán)境名稱,這時候用 conda env list 就可以列出你創(chuàng)建的所有環(huán)境。
你會看到環(huán)境的列表,而且你當(dāng)前所在環(huán)境的旁邊會有一個星號。默認的環(huán)境(即當(dāng)你不在選定環(huán)境中時使用的環(huán)境)名為 root。

6)刪除環(huán)境
如果你不再使用某個環(huán)境,可以使用 conda env remove -n env_name 刪除指定的環(huán)境(在這里環(huán)境名為 env_name)。
最后重新再強調(diào)下,不要被上面的命令嚇到。雖然上述命令多,給了誰都記不住的。后面你跟著我在知乎上多做項目,用的多了自然記住了。你只需要跟著上面步驟操作下,并理解了每一步是干什么的就可以了。后面遇到要做的事情,忘記了回頭查這個文檔就可以了。
conda的官方文檔:https://conda.io/docs/user-guide/tasks/index.html
按照上面的步驟你親自操作一遍后,你已經(jīng)學(xué)會了Anaconda,并安裝好你的數(shù)據(jù)分析Pyhton環(huán)境了,接下來你就可以愉快的使用Jupyter notebook來做數(shù)據(jù)分析了。