文章目录
本文内容对linux系统或windows系统安装的anaconda都适用
1、conda虚拟环境说明
conda虚拟环境包含有许多用户指定安装的特定的conda 安装包,可以随意指定不同项目使用各自的虚拟环境。conda 有一个默认的虚拟环境叫base,该环境包含安装好的python、核心系统软件以及conda所需的依赖包。最好不要在默认环境安装用户需要的特定版本的其它安装包。有特定的需求,要构建新的专用的虚拟环境。
1.1创建环境
#创建一个名字叫tf1的虚拟环境,指定python版本是3.6
conda create --name tf1 python=3.6
#或
conda create -n tf1 python=3.6
安装是指定版本有助于复现环境,如果不知道用那个版本好,可以先对版本进行搜索。
conda search your_package_name
#比如安装tensrorflow gpu版本
conda search tensorflow-gpu
#可以使用--help来获取更多搜索选项
也可以在创建环境时指定多个安装包
conda create -n tf1 python=3.6 jupyterlab=1.0 matplotlib=3.1 numpy=1.16
#安装这个包的同时,会把所需要的依赖包也安装上
1.2 环境激活
激活环境会做两件事
- 把虚拟环境填加到PATH环境变量中
- 运行虚拟环境包含的所有的激活脚本
#激活环境
source activate tf1
#或者windows
activate tf1
在conda4.6以后无论是linux还是windows,都可以使用一条同样的命令:
conda activate tf1
激活后,可以看来shell中提示符前有变化:
1.3 deactivate 虚拟环境
conda deactivate
直接退出激活环境
1.4 指定虚拟环境的安装位置
这样可以在默认安装环境大小不够的时候,指定安装到大的环境:
conda create --prefix ./env python=3.6 #或者-p
#激活
conda activate ./env
把虚拟环境安装到默认环境~/miniconda3/envs/之外,将不能使用–name(-n)来查找,要用–prefix指定虚拟环境的全部绝对路径来找到环境;
另一个不足是当激活后,显示的名字会是整个绝对路径,特别长会有问题,很不方便
#例如
(/absulute/path/to/env/)tianliang@ubuntu:~$
#可以过改.condarc中的env_prompt来简化,如里.condarc存在就直接有反映,没有就先创建再改变
conda config --set env_prompt '({name})'
1.5列出当前的所有环境
conda env list
conda info --env
conda info -e
#这三个命令的作用是一样的
1.6列出指定环境所有安装包
#激活前
conda list --name tf1 #或-n
#如果是激活前用--prefix创建的环境
conda list --prefix ./env #或-p
#激活后
conda list
1.7删除整个环境
conda remove --name tf1 --all #或-n
#如果用--prefix创建
conda remove --prefix ./env --all #或-p
2 共享虚拟环境
2.1 环境共享
当合作共同一个项目时,每个人的环境可能不同;自己远程使用服务器时,可能和本地的环境不同;所以共享环境很有必要。要做到真正在linux,windows,Mac os共享同一个环境。Conda使用yaml文件来描述环境。
如下将列一个环境的yaml,参照要自己写:
name: tl
dependencies:
- numpy
- pandas
这个文件创建一个名字叫tl的虚拟环境,所有包是当前兼容性最好的版本。安装路径在默认位置 ~/miniconda3/envs
如果想要指定一个位置,把名字改成null:
name: null
dependencies:
- numpy
- pandas
如果要加版本号:
name: tl
dependencies:
- numpy=1.16
- pandas=0.25
创建方法:
conda env create --prefix ./env --file environment.yml
尽量避免使用conda env export命令:
例如我们导出./env的环境:
conda env export --prefix ./env --no-builds --file env.yml
将./env环境的说明导出到文件env.yml,可以看来不只列出我们需要的两个包,还列出了所有的依赖。
在实际中,export命令导出不说明并不总能在linux,windows,mac os三个平台同时满足,即使用–no-builds去掉了编译号。
以下是一个常见的环境描述文件,我们可以把常用的工作环境写成一个文件,把自己需要的安装包都写进去,这样以后安装将非常方便。
name: tl
channels:
- defaults
- conda-forge
- districtdatalabs
dependencies:
- python=3.6
- jupyterlab=1.0
- pandas=0.25
- py-xgboost=0.82
- scikit-learn=0.21
- scikit-optimize=0.5
- featuretools=0.9
- yellowbrick=0.9
- kaggle=1.5
- pip=19.1
2.2 环境更新
我们不太可能提前知道开发项目所需要的全部软件的版本号:
- 某一个依赖包新版本发布,所以依赖所用版本号升级
- 需要自己指定安装某个包来做数据分析
- 发现相同功能但是更好用的另一个包,就要删除旧的来安装新的
有这些情况,需要更新版本,可以把更新的内容改到environment.yml文件中,然后:
conda env update --prefix ./env --file environment.yml --prune #--prune选项使Conda删除环境中不再需要的所有依赖项
2.3 环境克隆
想要做一个一模一样的环境,只是改变名字,或在另一个机器上做同样的环境来复现工作
conda create -n new_name --clone path/or_name
克隆的话指定路径和名字都可以,需要花一段时间,耐心
我个人常用科学计算(深度学习)环境:
做两个环境,一个用来安装tensorflow2.0与pytorch1.3,都是最新版本的tensorflow和pytorch;另一个环境安装早先一直使用的tf1.x版本,我用较老的1.5.
先写个environments_tf2.yml:
channels:
- defaults
dependencies:
- python=3.7
- tensorflow-gpu=2.0.0
- pandas
- pillow
- jupyterlab
- scikit-learn
- scikit-image
- seaborn
- pydot
- pip
- pip:
- opencv-contrib-python
安装命令:
conda env create -n tf2 --file environments_tf2.yml
1.5版本的tensorflow:
channels:
- https://repo.anaconda.com/pkgs/free
- defaults
dependencies:
- python=3.6
- tensorflow-gpu=1.5.0
- pandas
- pillow
- jupyterlab
- scikit-learn
- scikit-image
- seaborn
- pydot
- pip
- pip:
- opencv-contrib-python
安装命令:
conda env create -n tf1 --file environments_tf1.yml
再建一个pytorch环境
channels:
- pytorch
- https://repo.anaconda.com/pkgs/free
- defaults
dependencies:
- python=3.6
- tensorflow-gpu=1.5.0
- pandas
- pillow
- jupyterlab
- scikit-learn
- scikit-image
- seaborn
- pytorch
- torchvision
- pydot
- pip
- pip:
- opencv-contrib-python
另外,鉴于pytorch下载很慢,所以可以先不安装,等环境安好,进入环境再慢慢安。