安装tensorflow的时候接触到python虚拟环境,不是很明白,加上一直想实现python2和3的共存,因此决定学习一下python虚拟环境。
所谓虚拟环境,是创建了一个隔离的区域,拥有独立的包和解释器(一般都是位于xxx/envs/下的一个文件夹)。这样有如下好处:
- 解决不同项目对不同包的依赖问题。(这个问题一方面也是来源于python的设置,包不能放在项目内部)
- 解决不同python版本的共存问题以及提供不同的服务。
- 便于打包部署。
virtualenv
virtualenv 是目前最流行的 python 虚拟环境配置工具。它不仅同时支持 python2 和 python3,而且可以为每个虚拟环境指定 python 解释器,并选择不继承基础版本的包。[1]
其语法如下:[2]
- 创建虚拟环境
$ virtualenv venv # venv为虚拟环境目录名
### 指定python解释器
$ virtualenv -p /usr/bin/python2.7 venv
- 激活&停用环境
$ source venv/bin/activate
$ . venv/bin/deactivate
- 删除虚拟环境
### 删除其文件夹即可
$ rm -rf venv
这里virtualenv 有些不便,因为virtual的启动、停止脚本都在特定文件夹,可能一段时间后,你可能会有很多个虚拟环境散落在系统各处,你可能忘记它们的名字或者位置。所以可以利用其改进版virtualenvwrapper来整合所有虚拟环境。其实还可以使用pyenv来管理各种python环境,可以看[3]。
virtualenvwrapper
安装完virtualenvwrapper以后需要配置,以Ubuntu为例,在~/.bashrc中加入以下内容:
export WORKON_HOME=~/Envs # virtualenvwrapper存放虚拟环境目录
source /usr/local/bin/virtualenvwrapper.sh # virtrualenvwrapper会安装到python的bin目录下,所以该路径是python安装目录下bin/virtualenvwrapper.sh
其用法如下:
- 创建虚拟环境
$ mkvirtualenv venv
或
$ mkvirtualenv --python=/usr/bin/python2.7 venv
- 查看所有虚拟环境
$ workon
py2
py3
- 切换(激活)&退出虚拟环境
$ workon py3
(py3) $
(py3) $ deactivate
- 删除虚拟环境
$ rmvirtualenv venv
Anaconda
目前自己常用Anaconda,其通过conda也实现了虚拟环境的管理。用法如下[4]:
- 创建虚拟环境
$ conda create -n your_env_name python=X.X
- 查看所有虚拟环境
$ conda env list
或者
$ conda info -e
- 激活&退出虚拟环境
### Liuxs
$ source activate your_env_name
### windos
$ activate your_env_name
# 激活以后可以使用python --version 查看当前环境的python版本
# 退出使用相应的deactivate即可
- 删除虚拟环境
$ conda remove -n your_env_name --all
- 其他常用命令
### 为虚拟环境安装额外的包
$ conda install -n your_env_name [package]
### 删除环境中的某个包
$ conda remove --name your_env_name [package]
### 查看安装了哪些包
$ conda list
### 检查更新当前conda
$ conda update conda
Reference:
网友评论