本文由Scarb发表于金甲虫的博客,转载请注明出处

Python 虚拟环境管理 virtualenv virtualenvwrapper pyenv pyenv-virtualenv

记录一下python的几个虚拟环境管理包。

1. virtualenv

一般直接运行python应用会用系统全局安装的python。
virtualenv为python建立一个隔离的python环境,方便不同项目用不同版本的包时的切换。

1.1 virtualenv安装

1
$ pip install virtualenv

1.2 创建环境

创建虚拟环境,命名为venv

1
virtualenv --no-site-packages venv

这里的--no-site-packages参数指不将系统中已经安装的第三方包复制到这个虚拟环境。这样这个环境只会有setup-toolpip

1.3 启动和关闭

在linux系统下启动

1
$ source /path/to/venv/bin/activate

启动之后命令行上面会有(venv)前缀

关闭

1
$ deactive

在windows系统下启动

1
$ venv\Scripts\active.bat

关闭

1
$ venv\Scripts\deactive.bat

2. virtualenvwrapper

这个python包可以全局统一管理所有创建过的virtualenv虚拟环境。在windows上也可以用,有virtualenvwrapper-win

这里以virtualenvwrapper-win为例。

  • 安装
1
pip install virtualenvwrapper-win
  • 主要命令

mkvirtualenv [mkvirtualenv-options] [virtualenv-options] <name>
WORKON_HOME路径创建一个叫name的虚拟环境

``mkvirtualenv`` options:
  -h                    Print help text.
  -a project_path       Associate existing path as project directory
  -i package            Install package in new environment. This option
                        can be repeated to install more than one package.
  -r requirements_file  requirements_file is passed to
                        pip install -r requirements_file

any other options are passed on to the ``virtualenv`` command.                

lsvirtualenv
显示所有的虚拟环境

rmvirtualenv <name>
删除虚拟环境

workon [<name>]
激活叫name的虚拟环境(如果存在)

deactivate
停止虚拟环境

3. pyenv

只能在Linux和Mac上用,可以全局管理和切换Python版本。
配合pyenv-virtualenv可以全局管理多版本的虚拟环境。

3.1 安装

以下安装流程将pyenv安装在root目录下的.pyenv目录

  1. 安装依赖包:

yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y

  1. 安装pyenv包:

git clone https://github.com/pyenv/pyenv.git ~/.pyenv

  1. 设置环境变量:
1
2
3
4
5
6
vim ~/.bashrc 
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

source ~/.bashrc
  1. 重启shell

exec $SHELL

3.2 使用

  • 常用命令
1
2
3
4
5
6
7
8
pyenv install --list # 列出可安装版本
pyenv install <version> # 安装对应版本
pyenv install -v <version> # 安装对应版本,若发生错误,可以显示详细的错误信息
pyenv versions # 显示当前使用的python版本
pyenv which python # 显示当前python安装路径
pyenv global <version> # 设置默认Python版本
pyenv local <version> # 当前路径创建一个.python-version, 以后进入这个目录自动切换为该版本
pyenv shell <version> # 当前shell的session中启用某版本,优先级高于global 及 local

4. pyenv-virtualenv

这是一个pyenv插件,可以管理多Python版本的虚拟环境。

4.1 安装

  1. clone到本地
1
$ git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
  1. 添加环境变量
1
$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile

如果是zsh,添加到.zshenv

  1. 重启shell
1
$ exec "$SHELL"

4.2 使用

1
2
3
4
5
6
pyenv virtualenvs # 列出当前虚拟环境
pyenv virtualenv env # 从默认版本创建虚拟环境
pyenv virtualenv 3.6.4 env-3.6.4 # 创建3.6.4版本的虚拟环境
pyenv activate env-3.6.4 # 激活 env-3.6.4 这个虚拟环境
pyenv deactivate # 停用当前的虚拟环境
pyenv uninstall env-3.6.4 # 删除虚拟环境