技術雜談:Anaconda 簡易入門

【分享本文】
Facebook Twitter 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 支援 Windows、Mac、GNU/Linux 等系統,請讀者依自已所用的系統來安裝。本文以 Windows 系統為主來說明如何使用此發行版。

    使用商業套件的考量

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

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

    Anaconda vs. Miniconda

    Anaconda 的小缺點就是比較肥、占空間;現在的硬碟相對便宜,所以這個議題倒不是問題。如果真的很在意硬碟空間的話,也有 miniconda 這種縮小版,要多少套件才裝多少。不過,本文仍然假定讀者使用完整的 Anaconda,使用 miniconda 的讀者可交互參照著看。

    另外,Anaconda 預設有 Python 3 和 Python 2 兩種版本。不過裝好之後都可以再切換環境,版本的選擇主要是影響預設環境,所以裝 Python 3 的版本比較符合 Python 社群未來的走向。本文假定讀者使用 Python 3 的版本。

    Anaconda Navigator vs. Anaconda Prompt

    安裝完成後,可透過 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 裝。

    搭配 Virtualenv 建立獨立的開發環境

    由於 Windows 系統無法使用 pyenv 切換 Python 版本,而 Anaconda 發行版可以藉由切換環境來切換 Python 版本,故筆者推薦 Windows 使用者使用 Anaconda 取代官方 Python 版本。相對來說,Virtualenv 的目標是在單一專案中建立獨立的 Python 環境。

    在 Anaconda 中仍然可以用 Virtualenv 隔離每個專案的 Python 環境,就可以精確地控制每個專案的 Python 套件的版本。使用方式和單獨使用 Virtualenv 相同,只要在使用前先用 Anaconda 切好 Python 版本即可。

    使用 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 版本則無。

    【分享本文】
    Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email
    【追蹤新文章】
    Facebook Twitter Plurk