目录

  • 虚拟环境简介
  • 虚拟环境的安装和使用
  • 安装
  • 创建虚拟环境
  • 指定解释器
  • 启用虚拟环境
  • 停用虚拟环境
  • 删除虚拟环境
  • virtualenvwrapper
  • 安装
  • 简单使用
  • Anaconda中创建不同环境
  • 创建新环境
  • 激活环境
  • 退出环境
  • 查看当前环境
  • 管理


虚拟环境简介

虚拟环境提供一个独立于全局python环境(库library和解释器interpreter)的程序运行空间。这样一来,可以有效避免python程序之间的相互影响。

比如:程序 A 需要使用某个包的 1.0 版本,而程序 B 需要使用这个包的 2.0 版本,如果两个程序都使用全局python环境的话,当我们需要运行这两个程序,就需要来回卸载和安装对应版本的包了,会造成很多不必要的麻烦,有时候甚至产生一些莫名其妙的错误。

又比如: 程序 A 运行在python 2.7 之上,而程序 B 运行在python 3 之上,如果不使用虚拟环境,则两个程序将无法同时运行。这时,使用虚拟环境分别为这两个程序配置不同的运行环境,这样两个项目就可以互不干扰地同时运行了。

我们可以为每一个python项目或者程序创建一个虚拟环境,这样所安装的包和进行的各项配置都只对这个程序生效,而不会影响全局python环境或者其他项目的虚拟环境。

虚拟环境的安装和使用

安装

以Ubuntu 和 Python 3为例,如下安装:

sudo pip3 install virtualenv

下文中的pip都指pip3。

创建虚拟环境

为一个项目创建虚拟环境:

# 项目所在目录
cd the_project_fir
# venv是虚拟环境目录名,可自定义
virtualenv venv

执行上述命令,将会在项目文件夹中创建一个名为venv的文件夹,其包含了Python可执行文件,以及一份pip库的拷贝,这样就可以在虚拟环境中安装其他的包了。
需要注意的是,虚拟环境的目录名可以缺省,若缺省则文件直接放在当前项目目录。

指定解释器

为创建好的虚拟环境指定一个解释器:

# -p 参数指定python解释器路径
virtualenv -p /usr/bin/python3 venv

启用虚拟环境

需要使用这个虚拟环境之前,需要将其激活:

source venv/bin/activate

此时,使用pip安装任何的包都将放置在 venv文件夹中,而不是全局python环境。

停用虚拟环境

使用下面的命令来停用当前的虚拟环境:

. venv/bin/deactivate

此时将回到系统默认的python环境(全局python环境)。

删除虚拟环境

直接删除对应的文件夹即可,使用rm -rf venv

virtualenvwrapper

我们可以看到,使用virtualenv有些不方便。当配置的虚拟环境数量众多,需要启动或停止特定的环境时,都将进入到相应的目录运行这些启动或者停止脚本。过一段时间,你真的能记住哪个虚拟环境在哪个目录吗?

安装

virtualenvwrapper为我们提供了一种解决方案,将所有虚拟环境存放在同一个地方,方便对虚拟环境进行集中管理。

安装virtualenvwrapper,需要先安装virtualenv:

# Linux
sudo pip install virtualenvwrapper
# Windows
sudo pip install virtualenvwrapper-win

安装完成之后,配置环境变量,这里配置在用户环境变量中,即在~/.bashrc中写入:

# virtualenvwrapper存放虚拟环境的目录
export WORKON_HOME=~/Envs
# virtualenvwrapper会安装到python的bin目录下,所以为python安装目录下bin/virtualenvwrapper.sh
source /usr/local/bin/virtualenvwrapper.sh

使环境变量生效

source ~/.bashrc

简单使用

创建虚拟环境,使用mkvirtualenv命令:

# 创建
mkvirtualenv venv
# 通过--python指定解释器
mkvirtualenv --python=/usr/bin/python3 venv

运行上述命令之后,将在WORKON_HOME指定的目录创建名为venv的虚拟环境目录,并指定相应的解释器。

使用workon查看当前虚拟环境目录:

$ workon
venv
venv1

切换到指定的虚拟环境:workon venv21 退出虚拟环境:deactivate 删除虚拟环境:rmvirtualenv venv1

Anaconda中创建不同环境

如果你的python是通过Anaconda来进行安装的,那么可以使用Anaconda自带的工具来创建不同的环境。

比如,笔者装的Anaconda3(python3.7),但是安装tensorflow时发现没有对应的版本,tensorflow目前最高仅支持python3.6。这个时候怎么办呢?卸载python3.7转而安装python3.6吗?当然不用!

创建新环境

我们可以使用Anaconda来创建python3.6的环境:

# 使用conda命令创建python3.6环境
conda create -n py36 python=3.6 anaconda

其中,

  • py36是所创建环境的名称,可以自定义;
  • anaconda 是新环境中也安装Anaconda带有的包;
  • python=3.6指定新环境使用的python版本
  • 创建的新环境默认目录为:~/.conda/envs/

激活环境

激活新安装的环境,使用:

# windows
activate py36
# Linux/macOS
source activate py36

退出环境

当退出当前环境时,使用:

# windows
deactivate
# Linux/macOS
source deactivate

查看当前环境

一般来说,当前使用的环境将通过在命令行的最前端通过()或者[]显示,如:

(py36) $

如果没有显示,可以使用:

conda info --envs

当前使用的环境将在所有环境中使用*标记。

管理

查看创建的环境列表:

conda info --envs
# OR
conda env list

删除环境,使用(慎重):

conda remove -n py36 --all

查看某个环境中安装的包:

conda list -n py36
# 已处于激活状态
conda list

使用pip为创建的环境安装包:

# 为环境安装pip
conda install -n py36 pip
# 激活环境
source activate py36
# 安装包
pip <pip_subcommand>