快轉到主要內容

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
Linux 將卡式錄音帶的音樂轉錄到電腦,配合Audacity存成數位MP3檔案
分類   Linux系統 Linux好用軟體
標籤   PipeWire Linux
Kdenlive輸出影片時建議選擇的格式
分類   Linux系統 Linux好用軟體
標籤   Kdenlive Video Transcoding

留言板

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

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

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