快轉到主要內容

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

Linux系統 Linux好用軟體 Anaconda Python Arch Linux Ubuntu
🗓️ 民國112年 癸卯年
✍ 切換正體/簡體字
目錄

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

1. 使用Anaconda的理由
#

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

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

可是若我不是做這個的,要Anaconda幹嘛?我想,Anaconda最大的優點是在簡化軟體部署的同時,解決了三個問題:1. 方便在一台電腦安裝多版本Python 2. 方便管理虛擬環境的設定 3. 方便遷移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. 安裝前置依賴套件
#

根據 官網所述,按照Linux發行版安裝Anaconda的前置依賴套件,非root帳號記得加sudo。

Debian/Ubuntuapt-get install libgl1-mesa-glx libegl1-mesa libxrandr2 libxrandr2 libxss1 libxcursor1 libxcomposite1 libasound2 libxi6 libxtst6
RHEL/Fedora/CentOSdnf install libXcomposite libXcursor libXi libXtst libXrandr alsa-lib mesa-libEGL libXdamage mesa-libGL libXScrnSaver
Arch Linux/Manjaropacman -S libxau libxi libxss libxtst libxcursor libxcomposite libxdamage libxfixes libxrandr libxrender mesa-libgl alsa-lib libglvnd
openSUSE/SLESzypper install libXcomposite1 libXi6 libXext6 libXau6 libX11-6 libXrandr2 libXrender1 libXss1 libXtst6 libXdamage1 libXcursor1 libxcb1 libasound2 libX11-xcb1 Mesa-libGL1 Mesa-libEGL1
Gentooemerge x11-libs/libXau x11-libs/libxcb x11-libs/libX11 x11-libs/libXext x11-libs/libXfixes x11-libs/libXrender x11-libs/libXi x11-libs/libXcomposite x11-libs/libXrandr x11-libs/libXcursor x11-libs/libXdamage x11-libs/libXScrnSaver x11-libs/libXtst media-libs/alsa-lib media-libs/mesa

3. 安裝Anaconda
#

官網提供的Anaconda安裝指令稿支援的架構為x86/x86_64/armv7l裝置。aarch64(arm64)裝置請改用 miniforge

  1. 在安裝好依賴套件後,從 Anaconda官網下載安裝指令稿,撰文時的版本為2023-09。

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

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

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

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

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

  4. 接著會問要不要初始化Anaconda環境,輸入yes。

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

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

conda config --set auto_activate_base false

4. 如何使用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

如果想在bash shell script自動啟動conda環境,那麼可以填入此指令:

eval "$(conda shell.bash hook)"
conda activate "環境名稱"

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

相關文章

Arch Linux安裝多重Python版本,使其共存
Linux系統 Linux使用技巧 Arch Linux Python
Ubuntu繁體中文輸入法?改用Fcitx5來輸入中文吧!
Linux系統 Linux好用軟體 Ubuntu
Hydrus Network:以標籤作分類的圖片管理軟體,使用介紹
Linux系統 Linux好用軟體 Hydrus Network Photo Gallery

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur連結。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。