1. 程式人生 > >Anaconda介紹以及如何管理包和環境

Anaconda介紹以及如何管理包和環境

1.Anaconda介紹

你可能已經安裝了 Python,那麼為什麼還需要 Anaconda?有以下3個原因:

1)Anaconda 附帶了一大批常用資料科學包,它附帶了 conda、Python 和 150 多個科學包及其依賴項。因此你可以立即開始處理資料。

2)管理包

Anaconda 是在 conda(一個包管理器和環境管理器)上發展出來的。

在資料分析中,你會用到很多第三方的包,而conda(包管理器)可以很好的幫助你在計算機上安裝和管理這些包,包括安裝、解除安裝和更新包。 

3)管理環境

為什麼需要管理環境呢?

比如你在A專案中用了 Python 2,而新的專案B老大要求使用Python 3,而同時安裝兩個Python版本可能會造成許多混亂和錯誤。這時候 conda就可以幫助你為不同的專案建立不同的執行環境。

還有很多專案使用的包版本不同,比如不同的pandas版本,不可能同時安裝兩個 Numpy 版本,你要做的應該是,為每個 Numpy 版本建立一個環境,然後專案的對應環境中工作。這時候conda就可以幫你做到。

2.如何管理包

安裝了 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

如果想更新環境中的所有包(這樣做常常很有用),使用:conda update --all。

4)列出已安裝的包

#列出已安裝的包
conda list

例如我已經成功安裝了numpy和pandas這兩個常用的包。

如果不知道要找的包的確切名稱,可以嘗試使用 conda search search_term 進行搜尋。例如,我知道我想安裝numpy,但我不清楚確切的包名稱。我可以這樣嘗試:conda search num。

3.如何管理環境

conda 可以為你不同的專案建立不同的執行環境。

0)安裝nb_conda用於notebook自動關聯nb_conda的環境。

1)建立環境

在終端中使用:

conda create -n env_name package_names

上面的命令中,env_name 是設定環境的名稱(-n 是指該命令後面的env_name是你要建立環境的名稱),package_names 是你要安裝在建立環境中的包名稱。

例如,要建立環境名稱為 py3 的環境並在其中安裝 numpy,在終端中輸入 conda create -n py3 pandas。

2)建立環境時,可以指定要安裝在環境中的 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.6),請使用 conda create -n py python=3.6

3)進入環境

在 Windows 上,你可以使用 activate my_env進入。在 OSX/Linux 上使用 source activate my_env 進入環境。

進入環境後,你會在終端提示符中看到環境名稱,下面圖片是我進入py3的環境(這裡的py3是我上面建立環境時自己起的名稱,你可以起個自己喜歡的名稱)。

進入環境後,我可以用conda list 檢視環境中預設安裝的幾個包:

在環境中安裝包的命令與前面一樣:conda install package_name。

不過,這次你安裝的特定包僅在你進入環境後才可用。

3)離開環境

在 Windows 上,終端中輸入:

deactivate

在 OSX/Linux 上 輸入:

source deactivate

4)共享環境

共享環境非常有用,它能讓其他人安裝你的程式碼中使用的所有包,並確保這些包的版本正確。

你可以在你當前的環境中終端中使用 conda env export > environment.yaml 將你當前的環境儲存到檔案中儲存為YAML檔案(包括Pyhton版本和所有包的名稱)。

命令的第一部分 conda env export 用於輸出環境中的所有包的名稱(包括 Python 版本)。

在“notebook工作資料夾”下(及你在終端中上圖的路徑)可以看到匯出的環境檔案:

在 GitHub 上共享程式碼時,最好同樣建立環境檔案並將其包括在程式碼庫中。這能讓其他人更輕鬆地安裝你的程式碼的所有依賴項。

匯出的環境檔案,在其他電腦環境中如何使用呢?

首先在conda中進入你的環境,比如activate py3

然後在使用以下命令更新你的環境:

#其中-f表示你要匯出檔案在本地的路徑,所以/path/to/environment.yml要換成你本地的實際路徑
conda env update -f=/path/to/environment.yml

對於不使用 conda 的使用者,我通常還會使用 pip freeze > environment.txt 將一個 txt檔案匯出幷包括在其中。

舉個例子你可能更容易理解這個使用場景:

首先,我在自己的電腦上在conda中將專案的包匯出成environment.txt 檔案:

然後我將該檔案包含在專案的程式碼庫中,其他專案成員即使在他的電腦上沒有安裝conda也可以使用該檔案來安裝和我一樣的開發環境:

他在自己的電腦上進入python命令環境,然後執行以下命令就可以安裝該專案需要的包:

pip install -r /path/requirements.txt

其中/path/requirements.txt是該檔案在你電腦上的實際路徑。

5)列出環境

我有時候會忘記自己建立的環境名稱,這時候用 conda env list 就可以列出你建立的所有環境。

你會看到環境的列表,而且你當前所在環境的旁邊會有一個星號。預設的環境(即當你不在選定環境中時使用的環境)名為 root。

6)刪除環境

如果你不再使用某個環境,可以使用 conda env remove -n env_name 刪除指定的環境(在這裡環境名為 env_name)。