⚠️ 重要版權與安全聲明
由於 Anaconda 更改了商業授權條款,凡是在公司、學校、政府機關等機構內部使用,一旦機構總人數超過限制,極易觸發版權審查並被迫繳交鉅額的授權費用。
因此,現在強烈不建議將 Anaconda 作為日常使用的 Python 發行版,除非您確認自身所在的機構已購買官方授權。
本文後續的舊版資料僅供觀念參考。建議學生、個人開發者、小型團隊及企業內部人員,全面改用完全開源、免費且可商用的 Miniforge。
Anaconda 簡介與運作架構
Anaconda 為美國軟體公司 Anaconda, Inc. 所開發的 Python 與 R 語言整合發行版(Distribution)。該發行版採用「懶人包」的形式,除了原生的程式語言環境外,亦整合了核心管理工具與大量預載套件。
- 套件與環境管理器 (
conda):為此發行版的核心軟體,負責處理第三方套件的安裝、更新,以及管理不同的虛擬環境。 - 預載科學計算套件:預先打包了超過 1,000 個適用於資料科學、機器學習與學術研究等領域的 Python 套件,降低初期建置環境的時間成本。
- 多平台支援:支援 Windows、macOS 與 GNU/Linux 等主要作業系統。本文後續說明將以 Windows 系統的操作環境為主。
💡 核心觀念:什麼是虛擬環境(Environment)? 虛擬環境是系統內部隔離的獨立空間。使用者可以在不同的環境中,指定安裝不同版本的 Python 核心與特定版本的套件。各環境之間獨立運作、互不干擾,使用者可依據專案需求快速切換。
商業發行版的授權與合規考量
使用由商業公司維護的發行版,除了需考量供應商鎖定(Vendor Lock-in)的風險外,更需注意其商業授權條款(Terms of Service)的變更。
- 授權合規風險:Anaconda 已修改其商業政策,針對大型機構(如企業、學校、政府單位)採取收費制。若在非允許的環境下免費使用,將面臨法律與版權審查風險。因此在機構內部建置環境前,務必先確認組織是否已取得授權。
- 技術轉移與技能投資:不論使用何種發行版,其底層核心依舊是標準的 Python 與 R 語言。讀者所累積的程式語法與資料科學技能,並不會因為更換發行版而失效。
- 替代方案的銜接性:若因授權限制無法使用 Anaconda,可直接切換至完全免費且開源的 Miniforge。Miniforge 同樣內建
conda(或相容且速度更快的mamba)套件與環境管理工具。兩者的操作指令與運作邏輯完全相同,使用者可以無痛轉移,毋需擔心習慣適應問題。
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 的教學。