區分conda, anaconda, miniconda
anaconda相當於conda+python+pip+一堆python科學計算常用包(numpy, scipy, matplotlib等)
miniconda相當於conda+python+pip,輕量級。
conda是通用的包管理器,能裝pip包(例如numpy),也能裝其他語言的軟件包(例如ninja, cmake).
如果你用Python,做深度學習,那么強烈建議你使用miniconda/anaconda而不是系統自帶Python/pip,雖然硬盤空間可能多消耗一些,但往往能節省在環境配置上的時間開銷。
本文的各種命令可以在conda官方的文檔中找到:Conda User guide 。
不過,官網文檔內容過於詳實,簡直就是字典,我是看不下去的..
conda版本
conda -V
或者
conda --version
虛擬環境
創建虛擬環境
conda create -n env_name python=x.y
e.g. 創建python3.5的虛擬環境:
conda create -n py35 python=3.5
刪除虛擬環境
conda remove --name env_name --all
重命名虛擬環境
沒法直接重命名虛擬環境,只能很naive的從原有環境clone,然后刪掉原有環境(或者用下面的“分享環境”的做法,不過估計需要聯網速度更慢):
conda create --name new_name --clone old_name
conda remove --name old_name --all
列出虛擬環境
conda env list
或者:
conda info --envs
#也可以用縮寫形式:
conda info -e
切換/激活虛擬環境
conda activate env_name
e.g. 激活py35環境:
conda activate py35
退出當前虛擬環境
conda deactivate
分享環境
導出虛擬環境
導出到yml文件,相當於pip用的requirements.txt的升級版
conda env export > environment.yml
注意:如果導出的environment.yml開頭幾行顯示的channel是anaconda官方(https://repo.anaconda.com/pkgs/main
),可以考慮換成tuna的鏡像通道(https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
)來加速,e.g.
name: base
channels:
- https://repo.anaconda.com/pkgs/main
- defaults
dependencies:
- asn1crypto=0.24.0=py37_0
- attrs=19.3.0=py_0
- backcall=0.1.0=py37_0
...
換成:
name: base
channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- defaults
dependencies:
- asn1crypto=0.24.0=py37_0
- attrs=19.3.0=py_0
- backcall=0.1.0=py37_0
...
使用yml導入創建虛擬環境
conda env create -n env_name -f environment.yml
復制虛擬環境
conda create -n new_env_name --clone env_name
查看某個環境的位置
默認的conda虛擬環境叫做"base",它提供的python在/home/zz/soft/miniconda
。
base環境之外的虛擬環境,例如py35
,在/home/zz/soft/miniconda3/envs/py35/
。
在某些開源項目的編譯配置環境(例如OpenCV等),可以指定特定版本的python,則需要到/home/zz/soft/miniconda3/envs/py35/
這樣的位置下找。
列出軟件包
包的基本信息
顯示當前環境的所有包的基本信息
conda list
顯示指定虛擬環境的所有包的基本信息
conda list -n env_name
區分顯示conda和pip包的信息
當前環境的:
conda env export
輸出結果中- pip
開始列出的是pip包列表。
conda env export -n env_name
安裝軟件包
在當前虛擬環境中安裝軟件包
conda install pkg_name
e.g. 安裝cmake(cmake不是一個pypi包,但可以通過conda下載安裝,並且如果你在condarc中配置了國內鏡像,下載起來會非常快,比自己手動去cmake官網下載快很多):
conda install cmake
在指定虛擬環境中安裝軟件包
conda install --name env_name pkg_name
從指定channel下載安裝
以下載pytorch包舉例:
conda install --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ pytorch
或者用縮寫的參數-c
替代--channels
,用~/.condarc
中配置的名為pytorch的channel
conda install -c pytorch pytorch
刪除軟件包
當前環境
conda remove pkg_name
指定環境
conda remove --name env_name pkg_name
查找軟件包
conda search pkg_name
conda配置
.condarc
Linux/Mac: ~/.condarc
Windows: c:/Users/xxx/.condarc
在國內使用tuna的conda鏡像。個人感覺這個.condarc中配置的是各個channel,一方面是管理不同版本的包(例如pytorch這個channe),另一方面可以切換鏡像,用來加速。
channels:
- defaults
show_channel_urls: true
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pip.conf
Linux/Mac: ~/.pip/pip.conf
Windows: C:/Users/xxx/pip/pip.ini
除了配置conda鏡像,還需要配置pip鏡像。因為很多python包還是需要通過pip而不是conda安裝(conda里沒有相應的包,只有pypi里有),此時pip使用國內鏡像來加速,需要配置pip.conf
,例如:
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
bash/zsh自動加載
以前都是安裝miniconda/anaconda時選擇"yes",自動追加配置到~/.bashrc
,然后手動復制到~/.zshrc
(我默認用的zsh替代了bash作為解釋器)。其實可以更簡單:
conda init zsh
進入bash/zsh不自動activate base env
conda config --set auto_activate_base false
conda實踐:安裝python2的pip無法安裝的包
由於pip官方的不作為(辣雞pip),現如今python2對應的pip幾乎沒法裝pypi包了,一旦安裝就會失敗,提示你說:需要至少python3.5的環境。老子的python2為什么不給用了?垃圾pip。
RuntimeError: Python version >= 3.5 required
解決辦法:用conda安裝!例如:
conda install numpy