Anaconda 安裝及包管理工具 conda 進行虛擬環境包管理的基本操做

  在基於 python 進行數據分析、機器學習等領域的實踐和學習時,因爲代碼的更迭和更新,運行他人實現的代碼或嘗試安裝新的工具庫時每每須要指定特定版本的其餘工具庫,以知足特定環境的構建條件。而將同一工具庫的不一樣版本或者具備類似功能的不一樣工具庫堆積在同一個環境下顯然會爲環境的管理和使用增添負擔。故而,根據不一樣的任務要求,爲不一樣的需求和應用建立相互分離的環境,使得不一樣任務的環境不會相互干擾和影響,是一種天然而然的選擇。上述爲特定的任務和需求而配置構建的環境通常被稱爲虛擬環境。目前,比較常見的虛擬環境管理工具包括 virtualenv 和 conda 等。本文主要記錄使用 Anaconda 提供的包管理工具 conda 進行虛擬環境管理的基本操做命令,供學習與交流。html

  簡介前端

  Anaconda 是一種 Python 語言的免費增值開源發行版,用於進行大規模數據處理、預測分析,和科學計算,致力於簡化包的管理和部署(維基百科)。 Anaconda 使用軟件包管理系統Conda 進行包管理,爲用戶對不一樣版本、不一樣功能的工具包的環境進行配置和管理提供便利。python

  經過 Anaconda 所提供的 conda 工具建立的環境通常位於安裝目錄的 envs 目錄下,如筆者建立的環境的默認保存路徑即位於 /path/to/anaconda3/envs 目錄。shell

 

  Anaconda 安裝ubuntu

  目前 Ubuntu 環境下 Anaconda 提供直接安裝的腳本文件 .sh,這裏以 Ubuntu 環境下 Anaconda 的安裝簡要介紹一下其安裝流程。Anaconda 的官方安裝教程在這裏 Anaconda Document——Installationvim

  用戶能夠經過 Anaconda 官網( Anaconda Distribution )或者對應的鏡像網站獲取 Anaconda 的安裝包,通常而言 Anaconda 下載在鏡像網站如 清華大學開源軟件鏡像站——Anaconda 鏡像使用幫助 的速度更快,其中包含有下載 Anaconda 安裝包的連接。能夠使用 wget 命令下載文件( 下載至命令行的當前目錄 ),或者直接點擊下載連接( 通常經過瀏覽器下載至 ~/Downloads 目錄 )。瀏覽器

wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.2.0-Linux-x86_64.sh //下載上述鏡像網站中的 Anaconda3-5.2.0-Linux-x86_64.sh 至本地

  因爲 .sh 爲腳本文件,須要經過 shell 運行該文件以進行 Anaconda 的安裝過程,進入到下載有 Anaconda 安裝包的目錄,運行該腳本文件。bash

bash Anaconda3-5.2.0-Linux-x86_64.sh          //運行 Anaconda 的安裝腳本

  安裝大體流程以下( Anaconda3-5.2.0-Linux-x86_64 爲例 ):機器學習

  1. 首先閱讀對應的許可證( 進入後可經過回車或空格翻頁 ),在閱讀完成後,鍵入 yes 表示贊成許可內容,繼續安裝過程;編輯器

  2. 選擇 Anaconda 的安裝路徑,默認路徑爲用戶主目錄的 Anaconda 路徑,對應即爲 /home/test/anaconda3,鍵入回車鍵表示使用默認的安裝路徑,腳本會建立指定的目錄並存放對應的文件內容;

  3. 後續的通常流程都選擇默認配置便可( 即一路鍵入回車 )。這裏有幾個地方須要注意,一個是安裝過程當中,Anaconda 提示 "Do you wish the installer to prepend the Anaconda3 install location to PATH in your/usr/.bashrc ?",這個選項選擇 yes 時,會將 Anaconda 的可執行文件路徑放在 .bashrc 文件中 PATH 的最前端,此時若 /home/test/anaconda3/bin 和 /usr/bin/ 目錄下存在同名的可執行文件( 如 python 解釋器在上述兩個目錄中均存在 ),經過命令行執行命令時,會先匹配到 Anaconda 安裝目錄中的可執行文件。對於 python 解釋器而言,即爲優先使用 Anaconda 安裝的 python 解釋器( 而不是系統自帶的解釋器 )。另外一個注意點是在安裝的最後,Anaconda 會提示是否要安裝 vscode 編輯器,該選項用戶可根據本身的須要選擇是否安裝。

  安裝完成後,查看用戶根目錄下的 .bashrc 文件( 如 vim ~/bashrc 查看該文件最後一行,或者直接使用用戶比較熟悉的編輯器打開便可 ),能夠看到最下面的 PATH 路徑已經被加入了 Anaconda 的可執行路徑。

   

  此時要注意,雖然 .bashrc 文件已經將 Anaconda 的可執行目錄加入用戶的 PATH 路徑,但此時命令行運行的 Shell 仍爲以前的版本( 僅在開始時執行過 .bashrc 文件,後續該文件修改後並無自動更新 ),經過 echo $PATH 命令查看可知命令行的 PATH 變量中還不包含有 Anaconda 的可執行目錄,此時須要刷新當前命令行的 shell 或者說讓其從新執行 .bashrc 文件,能夠經過下面的 source 命令。執行完成後,刷新後的命令行經過 echo $PATH 顯示的內容中即會看到 Anaconda 的可執行目錄位於最前面。

source ~/.bashrc        //使得當前 shell 從新執行一次 .bashrc 文件的內容

  此時再直接鍵入命令行 python,首先被匹配的即爲 Anaconda 可執行目錄中的 python 解釋器( ~/anaconda3/bin/ 目錄中 ),而不是系統自帶的 python 解釋器( /usr/bin/ 目錄中)。此時 Anaconda 的安裝即完成。

    

  後面介紹下 Anaconda 提供的工具 conda 能夠使用的簡單操做。

 

  建立環境

  用戶經過 conda create 命令建立新的環境,環境默認位於 envs 目錄下,可經過 python=x.x 指定 python 版本,沒有指定時,建立的環境中使用的 python 版本與當前環境使用的版本一致。在使用上述命令時,可在最後附加須要安裝在該環境中的包的名稱,從而在建立的環境中安裝對應的包。

conda create -n/--name env_name [python=x.x][package_name]    //建立名爲 env_name 的環境,可進一步指定使用的 python 版本和該環境中安裝的包

  使用示例:

  建立名爲 py2 的環境,使用的 python 版本爲 python2:

conda create -n py2 python=2           //建立名爲 py2 的環境,其中的 python 版本爲python2

  建立名爲 yh 的環境,並在其中安裝 scipy 包:

  conda create --name yh scipy=0.15.0    //建立名爲 yh 的環境,並安裝 scipy 0.15.0 包,其使用的版本爲當前使用的 python 版本

  上述安裝到環境中的包都可經過 package=x.x 的方式指定特定安裝包的版本。

 

  查看環境

  使用 conda env list 命令查看已有的 conda 環境,包括環境的名字和其對應的目錄。

conda env list              //列出對應環境以及對應的目錄

  

  使用和退出環境

  進入建立的虛擬環境

source activate env_name        //進入名爲 env_name 的環境

  退出當前的虛擬環境

source deactivate              //退出當前的虛擬環境

  這裏,activate 和 deactivate 命令文件位於 anaconda 安裝目錄下的 bin 目錄中,但通常而言在安裝時設置其不具有可執行權限,故而想要執行上述程序須要在前面加入 source 命令,source 會讀取指定文件的內容( 這裏即 activate 和 deactivate ),並在當前 shell 執行該文件的內容。在較新版本的 conda 環境中,也能夠經過命令 conda activate env_name 進入建立的環境。

 

  conda經常使用命令

conda list (-n env_name)        //顯示環境中安裝的包的信息
    conda install (-n env_name) package   //在特定環境中安裝包
    conda remove (-n env_name) package    //移除特定環境中的包
    conda remove --all -n env_name              //移除特定環境中的全部包

  conda 命令既能夠直接針對當前虛擬環境進行操做,也可經過 -n 參數指定針對某個特定的環境進行操做。當不指定 -n 參數時,默認針對當前環境進行操做。

  更多的命令能夠經過 conda 的 -h 選項查看對應的幫助文檔,來了解命令的參數等信息。   

  

  分享環境

  conda 容許用戶經過 .yml 文件的方式共享其建立的環境,從而使得其餘用戶可以根據上述命令構建一致的實驗/操做環境。

  導出環境配置的文件

conda env export > environment.yml        //將當前環境的配置導出到 environment.yml 文件中

  上述命令會將當前環境下的 pip 包和 conda 包配置導出到 environment.yml 文件中,其餘用戶可經過上述文件構建新的與 .yml 文件配置保持一致的環境。

  根據 .yml 文件建立環境

conda env create -f environment.yml    //根據 environment.yml 文件建立新的環境

  建立的新環境的名稱在 .yml 文件的第一行 name 字段中已經指定好。

 

  MISC——虛擬環境結合 vscode 的使用

  噹噹前環境下建立有多個不一樣的虛擬環境時,在使用如 vscode( virtual studio code )時也須要指定當前項目所特定的運行環境,打開一個 python 項目,並經過 ctrl + shift + p 打開命令行工具,輸入 Python: Select Interpreter ,便可選擇當前項目所需使用的虛擬環境。

  

  上述操做若在 vscode 的歡迎界面( 未打開任何項目時 )執行,則操做指定的是後續 vscode 打開 python 項目的默認環境,用戶也能夠在特定的項目中經過上述操做指定新的特定於項目的虛擬環境。

  下圖能夠看到,筆者系統上的環境包括 ubuntu 自帶的 python 環境,即 /usr/bin/ 目錄下的 python 解釋器,以及筆者經過 Anaconda 建立的若干虛擬環境,如最下方的 ~/anaconda3/envs/theano/bin/ 目錄下的 python 解釋器,其中筆者建立的環境名對應爲 theano,該環境的目錄爲 ~/anaconda3/env/theano ,該環境安裝的 python 解釋器位於該目錄下的 /bin 目錄中,即對應 ~/anaconda3/env/theano/bin/python,此時只需根據任務須要選擇合適的運行環境便可。

    

 

  參考

  Conda User guide -> Tasks -> Managing environment

相關文章
相關標籤/搜索