快轉到主要內容

Linux系統安裝Anaconda教學,讓多版本Python共存

· 民國112年癸卯年
·
切換繁體/簡體
分類 Linux系統 Linux好用軟體
標籤 Anaconda Python Arch Linux Ubuntu
目錄

本文介紹Linux系統安裝Anaconda,用於跑Pyhton程式的方法。

1. 使用Anaconda的理由
#

Linux系統執行和開發Python程式,明明已經有pip管理套件,virtualenv管理虛擬環境,有什麼理由使用Anaconda呢?

根據官網描述,Anaconda是一個Python以及R語言的發行版,內建大量資料科學分析工具。

可是若我不是做這個的,要Anaconda幹嘛?我想,Anaconda最大的優點是在簡化軟體部署的同時,解決了三個問題:

一、方便在一台電腦安裝多版本Python

二、方便切換虛擬環境

三、方便遷移Python環境

首先考慮問題一,Pyhton多重版本共存的問題。例如Debian預設Python版本是3.9,Arch Linux預設Python是3.10。假設因應某軟體需求,現在要讓二部電腦建立一樣的Python 3.6環境,首要任務便是安裝一樣的Python版本了吧?Arch Linux可能有AUR舊版本的Python套件,一行指令直接裝;而Debian就得去找野生PPA,或是從Python官網下載原始碼編譯了。

於是,Anaconda解決了Linux系統多重Pyhton版本共存的問題,在安裝Anaconda後,要下載舊版Python也是一行指令裝好,從Python 2.7到Python 3.11都有。至於如何在執行時切換Python版本,這就要用到第二點的「虛擬環境」了。

再來考慮問題二,Python虛擬環境的問題。有時候我會從Github抓一些Python專案研究,可能就要用pip裝依賴套件。但是若我同時又在寫另外一個Pyhton程式,用到的套件衝突呢?別說不可能,opencv-pythonopencv-python-headless只有其中一個能運作的狀況遇過不只一次。通常為避免這種情況,都是建議用Python virtualenv建立虛擬環境避開吧,讓套件不會互相污染。而Anaconda也有這個功能,並且簡化了操作:透過Anaconda安裝各版本的Python,並建立虛擬環境,然後切換進去,還同時提供conda和pip這二種十分類似的套件管理器。在沒有Anaconda前這樣的操作需要額外設定Python路徑,指令很醜;而Anaconda將這個操作簡化至一行指令,方便進入Python開發環境。

問題三,Anaconda的檔案可以安裝在任意目錄,未來如果要換系統,只要在安裝Anaconda的時候指向之前的路徑就行了,依賴套件會全部保存下來,不需全部重裝。

2. 安裝Anaconda
#

建議從Anaconda官網下載安裝檔,不要用Linux套件管理器提供的Anaconda。

官網提供的Anaconda安裝檔支援x86、x86_64、armv7l架構的裝置。aarch64(arm64)架構裝置請改用miniforge

  1. 在安裝好依賴套件後,從Anaconda官網下載安裝指令稿。

  2. 下載後會得到一個shell指令稿,於下載的目錄開啟終端機。

  3. 開始安裝。Anaconda因為預設是安裝到目前使用者的目錄,所以不需要sudo。

bash Anaconda3-*-Linux-x86_64.sh
  1. 按Enter繼續

  2. 按上下鍵捲動,看完授權條款後按下q,輸入yes繼續安裝。

  3. 按Enter,等待安裝完成。conda會安裝至使用者家目錄的~/anaconda3

  4. 接著會問要不要初始化Anaconda環境,輸入yes。它會將Anaconda的啟動指令寫入到~/.bashrc

  5. 安裝完成後,重開終端機,之後終端機提示符會變成(base),代表已進入conda環境。欲退出則輸入conda deactivate退出conda環境。

  6. 把Linux當主力系統用的人建議輸入以下指令停用自動進入conda,否則每次開啟終端機都會頓一下並自動進入conda環境,很煩。

conda config --set auto_activate_base false

3. 如何使用conda指令
#

使用conda info檢查目前的Anaconda安裝狀態。

使用python --version查看目前Linux系統的Python版本,像這裡是3.10.9。之後進入虛擬環境後我們再來看看有何不同。

Anaconda提供的conda究竟有什麼用呢?讓我們來看看基本用法。

  1. conda的主要功能:建立隔離的Python環境。例如現在要建立一個叫做opencv,Python版本為3.6的虛擬環境,輸入以下指令:
conda create --name opencv python=3.6
  1. Conda會開始下載套件,輸入y同意。

  2. 輸入conda activate opencv進入名為opencv的虛擬環境,我們可以看到終端機提示符變成了(opencv)

  3. 此時我們可以查看一下Python版本:python --version,輸出為3.6.13,代表目前使用的Python為conda安裝的Python 3.6.13,而非Linux系統安裝的Python 3.10.9。

  4. 接著就可以用conda installpip install安裝套件了,二者效果是一樣的,也不用擔心會污染Linux系統的Python環境。虛擬環境安裝的套件僅在虛擬環境內才能執行,離開虛擬環境後便無法使用。

  5. 輸入conda deactivate退出目前的虛擬環境。

  6. 輸入conda info --envs查看目前已建立的虛擬環境,可以看到有安裝Anaconda時一併建立的base,還有上面建立的opencv環境。如果要進入特定虛擬環境,輸入conda activate <虛擬環境名稱>就行了。

  7. 欲刪除建立的虛擬環境,輸入以下指令,便會將名為opencv環境以及安裝的套件刪除:

conda env remove --name opencv
  1. 如果想在bash shell script自動啟動conda環境,那麼可以填入此指令:
eval "$(conda shell.bash hook)"

conda activate "環境名稱"

其餘conda指令的使用方式,請參考官方說明文件

相關文章


此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

(留言板載入中)這是Giscus留言板,需要Github帳號才能留言。支援Markdown語法,若要上傳圖片請善用外部圖床。您的留言會在Github Discussions向所有人公開。

Click here to edit your comments.

(留言板載入中)這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用外部圖床網站。