Conda是python程序运行环境的管理工具。Python是目前最流行的计算机语言,由于python是胶水语言,功能上的实现依赖第三方包。有的python脚本需要特定版本的依赖包运行,如果直接在电脑上安装该依赖包,可能影响到其他python脚本运行,因此python提出了虚拟环境和公共环境的概念,使用虚拟环境来单独为此python脚本安装依赖包。虚拟环境解决了依赖包安装的问题,那么如果脚本对python解释器版本有要求怎么办呢,conda就是解决为python解释器创建隔离环境的工具。conda可以理解为管理python程序运行环境的工具,包括python解释器和所需要的依赖包,通过conda可以创建指定版本python解释器的独立环境,并且可以在该环境下安装依赖包,每个环境的python解释器和依赖包都是独立存在的。
Conda分为anaconda和miniconda两个工具,anaconda是包含一些常用包,并且有图形用户界面,是比较完善的环境管理工具;miniconda是anaconda的精简版,仅包含conda主程序和基本包,没有用户界面。
Conda官网https://docs.conda.io/en/latest/miniconda.html
官网下载exe安装包安装,因为miniconda本身体积比较大,建议安装在空间较大的磁盘。安装版安装好后已经配置好环境的变量,具体是环境变量path中添加以下路径:
# 添加path的环境路径
D:\Miniconda3
D:\Miniconda3\Library\mingw-w64\bin
D:\Miniconda3\Library\usr\bin
D:\Miniconda3\Library\bin
D:\Miniconda3\Scripts
# 最主要的路径
D:\Miniconda3
D:\Miniconda3\Library\bin
D:\Miniconda3\Scripts
path环境变量主要用于全局cmd控制台,任何一个cmd都可以使用conda,如果没有在path添加miniconda路径,将无法直接使用conda的命令。为了避免污染全局环境,建议不使用全局环境变量,而是使用conda前激活环境即可。
安装好后win+r快捷键输入cmd调出控制台,输入
conda -V
,即可看到miniconda的版本号。
绿色免安装版miniconda,cmd中使用前可手动activate激活conda的base环境,或者临时添加环境变量。
# 激活conda的base环境(推荐)
Miniconda3\condabin\activate.bat
# 临时添加路径
path=%path%D:\Miniconda3;D:\Miniconda3\Library\bin;D:\Miniconda3\Scripts
官网下载对应平台对应的sh安装包,也可以通过命令下载安装包。
# Linux
wget -c https://repo.anaconda.com/miniconda/Miniconda3-py39_4.11.0-Linux-x86_64.sh
## 示例(-c断点续传,-O下载到用户目录下重命名为miniconda3.sh)
wget -c -O ~/miniconda3.sh https://repo.anaconda.com/miniconda/Miniconda3-py39_4.11.0-Linux-x86_64.sh
# MacOS
curl -O https://repo.anaconda.com/miniconda/Miniconda3-py39_4.11.0-Linux-x86_64.sh
## 示例(-C断点续传,-o下载到用户目录下重命名为miniconda3.sh)
curl -C -o ~/miniconda3 https://repo.anaconda.com/miniconda/Miniconda3-py39_4.11.0-Linux-x86_64.sh
wget和curl命令类似,都可以在linux和macos系统中用来下载文件,linux默认安装wget,macos默认安装curl。当不指定保存路径时,默认下载在当前目录下。
wget [option]
curl [option] 更多参数请使用
wget -h
或curl -h
查看清华大学镜像站Miniconda下载地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/
安装包所在目录鼠标右键进入终端,使用bash命令进行安装。
# 修改权限(提示权限不足时执行)
chmod 777 Miniconda3-py39_4.11.0-Linux-x86_64.sh
# 执行安装
bash Miniconda3-py39_4.11.0-Linux-x86_64.sh -b -p ~/miniconda3
参数:-b:表示默认允许许可证,-p:指定安装目录
以上命令表示默认不询问安装到用户目录下的minoconda3目录。(Linux和macOS路径中的
~
符号表示用户目录,sudo获取管理员权限后表示/root
目录(macos是/var/root
目录)。~
也可以使用$HOME
变量代替。)
在miniconda3/bin目录下,执行./conda init进行初始化。
cd ~/miniconda3/bin
./conda init
# 或者不进入目录直接执行
~/miniconda3/bin/./conda init
初始化后重新启动终端即可使用conda命令。
全局初始化即将conda的环境路径添加到用户目录的.bashrc文件中,终端每次启动时执行.bashrc添加conda的环境路径。
因为初始化conda会污染系统的环境,建议安装后不进行初始化,而是在终端中需要conda时再临时激活,这样就不会在每个终端中自动添加conda的环境路径。
# 如果权限不够修改相应文件权限
chmod 777 ~/miniconda3/bin/activate
# 激活conda环境(推荐)
source ~/miniconda3/bin/activate
因为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 --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
# 添加频道后需要显示频道
conda config --set show_channel_urls yes
# 删除镜像源频道
conda config --remove channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
# 查询已存在的频道
conda config --get channels
经测试使用镜像源无法创建conda环境。
2019年清华大学镜像站因未获授权停止服务,后经过与anaconda官方联系,清华大学镜像站2019-06-15恢复使用。官方声明:https://mirrors.tuna.tsinghua.edu.cn/news/restore-anaconda/
国内提供Conda镜像站的大学
清华大学: https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/
北京外国语大学: https://mirrors.bfsu.edu.cn/help/anaconda/
南京邮电大学: https://mirrors.njupt.edu.cn/
南京大学: http://mirrors.nju.edu.cn/
重庆邮电大学: http://mirror.cqupt.edu.cn/
上海交通大学: https://mirror.sjtu.edu.cn/
哈尔滨工业大学: http://mirrors.hit.edu.cn/#/home
(目测哈工大的镜像同步的是最勤最新的)
Linux下安装好miniconda并进行全局初始化后,启动终端就会自动进入conda的base环境,可以使用以下命令取消。
conda config --set auto_activate_base false
conda create -n [name] [python=version] [-y]
# 例如
## 安装python3最新版本,比如目前最新是3.10,如果python2最新版本同理。
conda create -n py3 python=3
## 安装指定python版本
conda create -n py39 python=3.9
## 不询问同意创建
conda create -n py39 python=3.9 -y
[name]:环境名称
[python=version]:python版本
[-y]:不询问默认同意创建
conda remove -n [name] --all
# 示例
conda remove -n py39 --all
在进行congda环境管理时常常需要查看已经存在的环境,这时候可以使用以下命令列出所有已创建的环境
# 三个命令任意一种
conda env list
conda info -e
conda info --envs
conda并没有提供重命名环境的命令,以下方法是克隆原来的环境,然后删除原来的环境,达到重命名的目的。
conda create -n python2 --clone py2
conda remove -n py2 --all
克隆py2到python2,然后删除py2。
# 激活
conda activate [name]
## 示例
conda activate py39
# 退出
conda deactivate
激活conda的环境后,地址前面将会出现(环境名)所在路径的命令窗口
(py39) C:\Users\Admin>
conda环境的依赖包管理工具由conda和pip两种,pip是python环境包管理工具,conda是conda环境下统一管理工具。
conda环境下查看已经安装的依赖包可以用list选项列出。
conda list
# 或
pip list
conda list可以列出所有依赖包,pip list不能列出conda环境创建时默认的部分包比如pip自己本身和splite3等等,但后期自行安装的依赖包两个工具都可以管理。
在conda环境下安装依赖包可以使用conda命令或者pip命令,执行后依赖包将下载安装在当前的conda环境下
##### 安装依赖包 #####
# Canda
conda install [package=version] [-y]
## Conda示例
conda install requests -y
## 指定版本包
conda install requests=2.27.1 -y
# Pip
pip install [package==version]
## Pip示例
pip install requests
## 指定版本包
pip install requests==2.27.1
##### 卸载依赖包 #####
# 用pip命令安装的包必须用pip卸载
# conda uninstall可能卸载存在问题,建议用conda remove
conda uninstall [package] [-y]
conda remove [package] [-y]
pip uninstall [package] [-y]
##### 更新依赖包 #####
conda update [package] [-y]
[package]:依赖包名
[-y]:不询问同意安装(请注意有些命令是不能假-y参数的)
# conda导出
conda list -e > requirements.txt
# conda导入
conda install --yes --file requirements.txt
# pip导出
pip freeze > requirements.txt
# pip导入
pip install -r requirements.txt
虽然conda可管理的包更多,但很多都是conda环境创建时自带的包,后手动安装的包使用conda和pip都可以管理,因此使用两个命令导出都可以,但是导入是要使用相应的命令导入。
Conda因为需要管理多个环境,在没有创建任何环境情况下,即使是精简版的miniconda体积也在700M左右(Windows版相对其他平台体积小一些),可以使用以下方法清理conda。
# 删除没有用的包(推荐)
conda clean -p
# tar打包
conda clean -t
# 删除所有安装的包及cache缓存
conda clean -y -all
pkgs目录是依赖包缓存目录,当conda创建环境或者conda/pip命令安装的依赖包都会缓存在该目录下,目的是下次安装的时候不用从网络下载。另一个目的是当conda环境创建过程中网络中断停止,重新创建时也不用全部下载依赖包而仅仅是下载缺少的包。
# 删除目录
rm -r pkgs
# 重建目录
mkdir pkgs
先清理无用包,再删除pkgs目录。pkgs目录是创建conda环境时下载的初始包,环境创建成功后就没有用了,删除该目录后在创建conda环境时会自动重建。
使用du命令查看miniconda安装目录下占用体积大小的文件和目录
# 在安装目录下执行命令
du -sh *
如果是安装包安装的直接在程序管理里面卸载即可;如果是绿色版直接删除conda的安装目录,删除path环境变量中conda有关的路径即可。
# 删除安装目录
rm -rf ~/miniconda3
miniconda安装在用户目录下的miniconda3目录,执行删除此目录
删除用户目录下.bashrc文件中与conda初始化有关的代码(如下)
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/lee/miniconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/home/lee/miniconda3/etc/profile.d/conda.sh" ]; then
. "/home/lee/miniconda3/etc/profile.d/conda.sh"
else
export PATH="/home/lee/miniconda3/bin:$PATH"
fi
fi
unset __conda_setup
# <<< conda initialize <<<
如果当前目录需要立即更新删除miniconda后的环境,则立即执行.bashrc文件,否则终端重启也会重新读取.bashrc
# 执行.bashrc文件
source ~/.bashrc