技術雜談:Anaconda 簡易入門

PUBLISHED ON JUN 28, 2018
FacebookTwitter LinkedIn LINE Skype EverNote GMail Yahoo Email

    最近在 Python 語言相關討論區會看到有網友在問 Anaconda 相關的問題,網路上中文相關的介紹也偏少,因此筆者在這裡寫一篇相關的介紹,讓讀者可以比較快上手。Anaconda 是一家美國的軟體公司 (見 FAQ),該公司製作了一套 Anaconda Python Distribution,該 Python 發行版算是 Python (和 R) 的懶人包,這套發行版除了原本 Python 和 R 的功能外,另外加入套件管理和環境管理相關的軟體 (conda),也預包了 1000+ 資料科學 (和其他領域) 相關的 Python 套件。

    註:環境 (environment) 是 Anaconda 中虛擬的概念,在某個環境中可以指定某個版本的 Python 軟體和相關的套件,並且可快速在不同環境中切換,環境間不會互相干擾。

    或許有些讀者會對這種商業公司發展的版本有疑慮,筆者也想過類似的議題。不過,Anaconda 除了加上一些比較方便的套件管理及環境管理相關的功能,以及少數 Anaconda 特有的套件外,其他的東西其實和原本的 Python (和 R) 差不多,擔心 vendor lock-in 的問題的話就避開少數專有套件即可。如果 Anaconda 真的不幸倒掉,大不了再回頭用原本的 Python (和 R),只是少掉 conda 所帶來的便利性,原本投資在 Python (和 R) 的技能點不會因而廢掉。

    註:筆者和 Anaconda 沒有對價關係,本文和該公司也沒有關係,純粹為個人意見。

    Anaconda 的小缺點就是比較肥、占空間;現在的硬碟相對便宜,所以這個議題倒不是問題。如果真的很在意硬碟空間的話,也有 miniconda 這種縮小版,要多少套件才裝多少。不過,本文仍然假定讀者使用完整的 Anaconda,使用 miniconda 的讀者可交互參照著看。另外,Anaconda 預設有 Python 3 和 Python 2 兩種版本,不過裝好之後都可以再切換環境,版本的選擇主要是影響預設環境,所以裝 Python 3 的版本應該比較符合 Python 社群未來的走向。本文假定讀者使用 Python 3 的版本。

    Anaconda 支援 Windows、Mac、GNU/Linux 等桌面系統,請讀者依自已所用的系統來安裝。本文以 Windows 系統為主來說明如何使用此發行版。

    安裝完成後,可透過 Anaconda Navigator 或終端機環境來使用。Anaconda Navigator 只是把一些 GUI 軟體的捷徑集中在一起,看起來比較美觀,那些軟體不一定會用到,而且日後 Navigator 的畫面可能會改版。筆者還是比較建議學一下終端機的 conda 軟體,常用的指令就那幾個,其實不會太難,而且指令的改版通常較慢。如果是在 Windows 下,透過 Anaconda Prompt 可以進入設好環境變數的終端機,而類 Unix 系統上建議直接設置環境變數後用系統終端機。

    本文列出一些常見的使用情境給讀者參考。

    安裝 Python 2

    雖然 Python 2 系列不會再新增功能了,但少數軟體仍未轉移到 Python 3,偶爾還是會想到切換到 Python 2.7 版。用以下指令即可安裝 Python 2.7 的環境:

    $ conda create -n py27 python=2.7 anaconda
    

    用以下指令切換至新環境:

    $ conda activate py27
    

    使用完就離開:

    $ conda deactivate
    

    安裝 R

    雖然 Anaconda 主打 Python,但也可以在 Anaconda 中使用 R 軟體。以下指令即可建立一個新環境並安裝基本的 R 套件:

    $ conda create -n mro r-essentials
    

    Anaconda 預設安裝 Microsoft R Open (MRO),這是微軟支援的 R 版本。如果想用原本的 R 軟體,將指令修改如下:

    $ conda create -n r-env r-essentials r-base
    

    要使用時切換至新環境:

    $ conda activate mro
    

    附帶一提,經筆者實測,目前 (2018 年 6 月下旬) 安裝 MRO 會出現以下錯誤訊息:

    Error: package or namespace load failed for ‘RevoUtilsMath’:
     .onLoad failed in loadNamespace() for 'RevoUtilsMath', details:
      call: NULL
      error: Remove Microsoft R and then re-install.
    Be sure to select MKL libraries as an install option.
    

    但即使加上 MKL 再重裝 MRO 也是出現同樣的訊息,應該是版本更換時暫時性的問題,但似乎不影響使用;而目前標準 R 軟體沒有這個錯誤訊息。

    移除環境

    除了內建的 base 環境外,其他環境若用不到了可以移除,以簡省空間。以下指令可以移除環境:

    $ conda env remove -n mro
    

    安裝 Python 套件

    conda 也可以用來安裝 Python 套件,如下例:

    $ conda install scipy
    

    少數 Anaconda 沒有包進來的冷門套件,還是可以回頭用 pip 裝。

    使用 Jupyter Notebook 或 Spyder

    傳統上,學習 Python 時會撰寫 Python 命令稿,再從終端機呼叫 Python 軟體。不過,透過 Jupyter Notebook 或 Spyder 可以簡化輸入程式碼的過程。這兩個 GUI 軟體略有不同,前者是網頁程式,主要目的是做為互動式筆記本,後者則是 Python IDE。在 Anaconda 中這兩者皆已經預裝好,可以直接使用。本文的目的是介紹 Anaconda 本身,或許日後可再加入這兩者的教學。

    安裝 RStudio

    現在應該很少人會用純終端機的 R,大部分都會用 RStudio 之類的 IDE,操作上比較親和。在 Anaconda 安裝 RStudio 相當簡單,開啟 Anaconda Navigator 後,切到 R 軟體所在的 environment,再選 Install RStudio 即可安裝,之後就用同樣的捷徑開啟 RStudio 即可。或許我們有機會再另開一篇 RStudio 的教學。

    [Update on 2018/06/29] 如果出現 RStudio 無法安裝的問題,可參考這裡提供的方法排除。筆者在測試時,Windows 版本有碰到此問題,而 GNU/Linux 版本則無。