【开发环境搭建】2.Anaconda虚拟环境的创建、复用和更新


本文内容对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 环境激活

激活环境会做两件事

  1. 把虚拟环境填加到PATH环境变量中
  2. 运行虚拟环境包含的所有的激活脚本
#激活环境
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 环境更新

我们不太可能提前知道开发项目所需要的全部软件的版本号:

  1. 某一个依赖包新版本发布,所以依赖所用版本号升级
  2. 需要自己指定安装某个包来做数据分析
  3. 发现相同功能但是更好用的另一个包,就要删除旧的来安装新的
    有这些情况,需要更新版本,可以把更新的内容改到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下载很慢,所以可以先不安装,等环境安好,进入环境再慢慢安。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值