文章目录
1. 为什么需要虚拟环境
在做项目时,有可能会遇到对于python中的A包,项目甲和项目乙所需的A包的版本不同,我们不可能在做项目甲时安装A包的一个版本,在做项目乙时又将A包更新到另一个版本。虚拟环境就是为了解决这样的冲突,我们创建一个虚拟环境env1,在虚拟环境env1中安装A包的一个版本,做项目甲;创建另一个虚拟环境env2,在其中安装A包的另一个版本做项目乙。
创建虚拟环境后,进入虚拟环境,系统中的各个文件夹在不同环境中仍然是共享的,只是不同环境中管理不同的包。
2.使用conda创建虚拟环境
创建虚拟环境前可以使用如下conda指令查看一些配置
- 检验是否安装及当前conda的版本
conda -V
- 查看安装了哪些包
conda list
- 检查更新conda
conda update conda
使用conda创建虚拟环境
- 创建一个虚拟环境,其中
env_name
是自定义的虚拟环境名字,python=x.x
指定python版本
conda create -n env_name python=x.x
也可以在后面加上 --yes
参数,从而在安装过程中不需要另外确认是否要安装,效果如下,对于使用conda install pkg_name
也相同
- 查看当前存在哪些虚拟环境
conda env list 或者 conda info -e
- 进入虚拟环境
conda activate en_name 或者 source activate env_name
- 进入虚拟环境后使用如下指令可以只在当前环境中安装删除包
conda install pkg_name
conda uninstall pkg_name
pip install pkg_name
pip uninstall pkg_name
- 退出当前虚拟环境
conda deactivate 或者 source deactivate
- 删除虚拟环境
conda remove -n env_name --all
添加国内镜像源
使用conda默认的源来安装包速度非常慢,甚至失败,因此可以添加国内源来加快安装包的网速
在linux下,使用vim ~/.condarc
修改配置文件,若配置文件里面为空,直接将如下代码拷贝进去,若存在一些源,可以将其他源的链接按原先格式添加进去
# 中科大源
channels:
- https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
- https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
- https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/
ssl_verify: true
# 清华源
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/cloud/conda-forge/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
ssl_verify: true
3. 其他问题
3.1 添加已有虚拟环境
背景
- 在使用
conda activate [environment name]
或者source activate [environment name]
时,可能出现你明明安装了一个环境,但是 conda 却发现不了,然后提示Could not find conda environment。甚至可能conda env list或者conda info --envs后,居然发现环境是存在的。 - 电脑上已经有一些pyhon环境了(比如安装了多个anconda,他们的虚拟环境保存的并非同一个目录下),需要将他们添加到conda下作为conda虚拟环境来管理
解决方法
- 查看conda配置的环境路径中有没有安装环境的目录
conda config --show envs_dirs
- 手动添加环境目录
找到你已存在的环境路径,并添加到conda里:下面的your_path
是已存在环境路径
conda config --append envs_dirs your_path
- 删除环境目录
如果你想要这个环境,可以执行以下命令删除
conda config --remove envs_dirs your_path
3.2 重命名虚拟环境名称(克隆环境)
conda中无法直接重命名虚拟环境名称,但是可以曲线救国,通过新建一个虚拟环境,且新建的环境clone旧的环境。所以重命名虚拟环境名称的过程为:
(1)新建并克隆旧的环境
(2)删除旧环境
conda create --name new_name --clone old_env_name
conda remove --name old_env_name --all
3.3 jupyter创建新的kernel
# 1. 进入需要创建kernel的虚拟环境
conda activate your_env_name
# 2. 创建kernel
python -m ipykernel install --name your_env_name
注意:第二步中name参数可以自定义,一般建议设置为当前虚拟环境名称一致
另外一种方法是在创建虚拟环境的同时创建kernel
conda create -n your_env_name python=3.5 ipykernel
3.4 修改多个conda优先级
当我们一台机器上存在多个conda时,我们在3.1章节中介绍过如何在默认conda中引入其他conda创建的虚拟环境。当我们通过3.1的方法引入其他环境时,系统将默认以后创建的环境存在第一个环境目录下,如下图所示,默认新创建的环境保存在D盘的环境中
现在我们想把第三个环境的优先级放到第一位,让新建的环境默认保存在第三和环境中,那么我们需要在conda配置文件中将第三个环境移动到第一位。默认conda的配置文件位于$HOME/.condarc
,修改该文件下的envs_dirs
即可