開源包管理系統(tǒng)和環(huán)境管理系統(tǒng) Conda
簡介
在做 Python 開發(fā)時,或許你接觸過 virtualenv
,他可以為不同的環(huán)境安裝不同的 Python 環(huán)境支持。如果你還知道 virtualenvwrapper
,你會發(fā)現(xiàn)它用起來更加方便,它是對 virtualenv
的封裝,可以很方便的創(chuàng)建和管理多個不同的開發(fā)環(huán)境。關(guān)于 virtualenv 和 virtualenvwrapper 的介紹可以參考以下內(nèi)容:
在 Python 中,還有一個更為強(qiáng)大的環(huán)境管理工具,即 Conda。Conda 不僅可以管理不同的開發(fā)環(huán)境,還可以像 pip 一樣進(jìn)行包管理。Virtualenv 與 Conda 的功能功能差別不是很大,個人覺得 Virtualenv 在 Web 開發(fā)領(lǐng)域用得多些,Conda 則主要在科學(xué)計算環(huán)境中比較常用。
Conda 是開源的包管理系統(tǒng)和環(huán)境管理系統(tǒng),可以安裝軟件包的多個版本和依賴,而且各環(huán)境可以很方便的切換。Conda 支持 Linux,OS X 和 Windows 系統(tǒng)。Conda 主要為 Python 程序所創(chuàng)建,但是可以打包和分布任意軟件。Conda 有多個版本,包括 Anaconda, Anaconda Server 和 Miniconda。
安裝
Conda 的安裝可以參考官方文檔:http://conda.pydata.org/docs/installation.html,只需下載安裝程序安裝即可。
這里以在 Linux 下安裝 miniconda
為例, 安裝過程中默認(rèn)會在用戶主目錄下創(chuàng)建一個 miniconda 的目錄,同時會在 ~/.bash_profile
中追加配置。如果要卸載 Miniconda,只需要刪除相應(yīng)配置和文件即可:
rm -rf ~/miniconda ~/.condarc ~/.conda ~/.continuum
安裝完成后的 miniconda 目錄是 Conda 的默認(rèn)環(huán)境,該默認(rèn)環(huán)境被命名為 root,要激活默認(rèn)環(huán)境可以執(zhí)行如下命令:
source ~/miniconda/bin/activate root
用戶創(chuàng)建的其他環(huán)境則被存放在 ~/miniconda/envs
中。
使用
1. 創(chuàng)建一個新環(huán)境
使用 conda 創(chuàng)建環(huán)境的方法如下:
conda create --name snowflakes ipython biopython
這將創(chuàng)建一個名為 snowflakes
新環(huán)境并存放在 ~/miniconda/envs/snowflakes
中。--name
參數(shù)用于指定環(huán)境名,也可以簡寫成 -n
。命令最后可以接上在創(chuàng)建的同時需要一并安裝的庫和模塊,同時還可以指定庫或模塊的版本。例如創(chuàng)建一個 Python3 環(huán)境:
conda create -n bunnies python=3 astroid babel
也可以通過克隆其他環(huán)境來創(chuàng)建一個新環(huán)境:
conda create --name flowers --clone snowflakes
2. 環(huán)境的激活與退出
要激活一個環(huán)境可以使用如下命令:
source ~/miniconda2/bin/activate bunnies
在有些電腦上可能需要指定全路徑,即:
source ~/miniconda2/bin/activate bunnies
激活成功后在當(dāng)前 shell 提示符前會加上環(huán)境名,像這樣:
(bunnies)konghy$[~] => conda --version
conda 4.0.5
要退出當(dāng)前環(huán)境,可以用如下命令:
source deactivate bunnies
3. 包的安裝及其管理
安裝包用 conda install <pkg name>
命令,同時可以指定包的版本,例如:
conda install python=3.5
如果需要安裝到指定的環(huán)境中,則用如下命令:
conda install --name bunnies python=3.5
當(dāng)然,在安裝 conda 是都會默認(rèn)安裝 pip
工具,所有同樣可以用 pip 來安裝依賴包。
列出當(dāng)前環(huán)境中所有的包:
conda list
列出指定環(huán)境中所有的包:
conda -n bunnies
查找可安裝的軟件包:
conda search python
這樣 Conda 會做模糊匹配,也就是所有帶 “python” 字符的包都會被查找出來,如果只需要查找 python 包,則可用如下命令:
conda search --full-name python
包的更新:
conda update conda python ipython
刪除軟件包:
conda remove --name bunnies ipython
4. 環(huán)境管理
- 查看環(huán)境信息
查看系統(tǒng)中安裝的所有環(huán)境:
conda info --envs
查看 Conda 環(huán)境系統(tǒng)信息:
conda info --system
查看環(huán)境系統(tǒng)更加詳細(xì)的信息:
conda info --all
- 刪除環(huán)境:
刪除環(huán)境中指定的包:
conda remove --name flowers ipython biopython
徹底刪除環(huán)境:
conda env remove --name flowers
- 導(dǎo)出環(huán)境:
conda env export --name bunnies --file build_bunnies.yml
或者
conda list -e > spec-file.txt
- 從文件創(chuàng)建環(huán)境:
如果是用 conda env export --name
導(dǎo)出的文件,則可用下列命令創(chuàng)建:
conda env create -f build_bunnies.yml
如果是用 conda list -e
導(dǎo)出的文件,則用如下方式創(chuàng)建:
conda create --name <env> --file <deps file>
- 更新環(huán)境:
conda env update --name bunnies --file=environment.yml