Anaconda的環境管理和包管理

在服務器運行程序,不同的項目會有不同的環境需求,conda可以創建並管理多個環境,很好的解決了我們的問題。

1. Conda的環境管理

Conda的環境管理功能允許我們同時安裝若干不同版本的Python,並能自由切換。假設我們安裝anaconda時採用的是Python 2.7對應的安裝包,那麼Python 2.7就是默認的環境(默認名字是root,注意這個root不是超級管理員的意思)。

這時如果我需要安裝python3.6:

# 創建一個名爲py36的環境,指定Python版本是3.6
# (不用管是3.4.x,conda會爲我們自動尋找3.4.x中的最新版本)
conda create -n py36 python=3.6
 
# 安裝好後,使用activate激活某個環境
source activate py36
# 激活後,會發現terminal輸入的地方多了python34的字樣,實際上,此時系統做的事情就是把默認2.7環境從PATH中去除,再把3.6對應的命令加入PATH
 
# 此時,再次輸入
python --version
# 可以得到`Python 3.6.2 :: Continuum Analytics, Inc.`,即系統已經切換到了3.6的環境
 
# 如果想返回默認的python 2.7環境,運行
source deactivate py36
 
# 複製一個環境
conda create -n py36 --clone py36clone
# 刪除一個已有的環境
conda remove --name py36 --all
# 爲了確定這個環境已經被移除,輸入以下命令
conda info -e # 查看conda管理的環境信息,當前使用的環境會有*標識

在使用anaconda環境時有幾點注意事項

  1. 儘量使用anaconda的新建環境功能
  2. 儘量避免在最基本的環境中裝package
  3. 能用conda安裝的儘量用conda安裝

動態鏈接庫的版本和系統的版本不同會對軟件的編譯造成影響。簡單的增加LD_LIBRARY_PATH環境可能不是最好的選擇。(我就曾遇到在安裝caffe2後再安裝pytorch時,import torc

h出錯,後來發現原因是之前在安裝caffe2時將caffe2的動態鏈接庫加入到.bashrc的LD_LIBRARY_PATH,導致後來在使用pytorch時import torch系統錯誤的在caffe2中尋找庫引發ImportError)

因此我們希望在切換conda環境的時候,纔將需要的鏈接庫路徑加入到這個環境變量中。同時爲了更方便地在不同的conda環境中切換,可以編寫一個簡單的函數來實現。

在.bashrc中加入:

sra() {
        CONDA_ROOT="~/anaconda2"
        env=$1
        source activate $env
        export LD_LIBRARY_PATH="$CONDA_ROOT/envs/$env/lib:$LD_LIBRARY_PATH"
}
alias srd='source deactivate'

保存後運行:

source .bashrc

這樣我們就有兩個簡單的命令sra和srd

  • sra env:切換到對應的環境(env爲環境名),並將動態鏈接庫路徑加入到LD_LIBRARY_PATH中
  • srd:取消激活的環境

2. Conda的包管理

常用命令:

# 安裝某個包,如scipy,conda會從從遠程搜索scipy的相關信息和依賴項目
conda install scipy

# 查看已經安裝的packages
# 最新版的conda是從site-packages文件夾中搜索已經安裝的包,不依賴於pip,因此可以顯示出通過各種方式安裝的包
conda list

# 查看某個指定環境的已安裝包
conda list -n python34
 
# 查找package信息
conda search numpy

# 安裝package
conda install -n python34 numpy
# 如果不用-n指定環境名稱,則被安裝在當前活躍環境
# 也可以通過-c指定通過某個channel安裝
 
# 更新package
conda update -n python34 numpy
 
# 刪除package
conda remove -n python34 numpy

# conda將conda、python等都視爲package,因此,可以使用conda來管理conda和python的版本
# 更新conda,保持conda最新
conda update conda
 
# 更新anaconda
conda update anaconda
 
# 更新python
conda update python
# 假設當前環境是python 3.4, conda會將python升級爲3.4.x系列的當前最新版本

另外,使用conda來進行包管理還有一個好處在於可以使用清華鏡像源進行下載,比從官方源下載速度快很多。

運行以下命令:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes

即可添加 Anaconda Python 免費倉庫。更多請見:Anaconda 鏡像使用幫助


參考資料:

  1. CSDN博客:【Anaconda】conda環境管理和包管理,作者:CS青雀

  2. 清華大學開源鏡像站:Anaconda 鏡像使用幫助

  3. 教研室師兄:服務器使用 Tips

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章