在服務器運行程序,不同的項目會有不同的環境需求,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環境時有幾點注意事項:
- 儘量使用anaconda的新建環境功能
- 儘量避免在最基本的環境中裝package
- 能用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 鏡像使用幫助
參考資料:
-
CSDN博客:【Anaconda】conda環境管理和包管理,作者:CS青雀
-
清華大學開源鏡像站:Anaconda 鏡像使用幫助
-
教研室師兄:服務器使用 Tips