Python虚拟环境Virtualenv和Virtualenvwrapper搭建

virtualenv 是一个创建隔绝的Python环境的 Python 包。当我们遇到几个项目依赖不同版本的包的时候,如:项目A需要 Django 1.10 版本,项目B需要 Django 1.11 版本,这时就可以使用 virtualenv 来解决这个问题。

Virtualenv

安装virtualenv

1
pip install virtualenv

使用方法

1
2
3
mkdir your_project_folder
cd your_project_folder
virtualenv env # env是你的虚拟环境名称

此时会建立一个带有系统 Python 环境中所有第三方包的 Python 运行环境,若不想带有这些第三方包,命令中加上--no-site-packages这个参数,就可以得到一个不带有任何第三包的“纯净”的 Python 运行环境。

1
virtualenv --no-site-packages [虚拟环境名]

并且,在创建虚拟 Python 运行环境时,还可以通过-p参数指定 Python 解释器:

1
virtualenv -p /usr/bin/python3 [虚拟环境名]

激活虚拟环境

1
source env/bin/activate

运行此命令后,会发现命令提示符前多了一个(env)的前缀,这表明当前环境是一个名为 env 的 Python 运行环境。

退出虚拟环境

1
deactivate

若不想要该虚拟运行环境了,直接使用rm -rf [虚拟环境名]命令删除即可(简单粗暴)。

Virtualenvwrapper

virtualenvwrapper 是 virtualenv 的扩展管理包,virtualenvwrapper提供了一系列命令让虚拟环境在使用时变得愉快许多,它把您所有的虚拟环境都放在一个地方。

安装

1
pip install virtualenvwrapper

安装完成后,还需要运行 virtualenvwrapper.sh 文件才使用 virtualenvwrapper,该文件通常情况下是在/usr/local/bin/目录下,但有时发生意外情况就需要查找该文件了:

1
find / -name virtualenvwrapper.sh

该文件中写有安装步骤,按照步骤把环境设置好即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# Setup:
#
# 1. Create a directory to hold the virtual environments.
# (mkdir $HOME/.virtualenvs).
# 2. Add a line like "export WORKON_HOME=$HOME/.virtualenvs"
# to your .bashrc.
# 3. Add a line like "source /path/to/this/file/virtualenvwrapper.sh"
# to your .bashrc.
# 4. Run: source ~/.bashrc
# 5. Run: workon
# 6. A list of environments, empty, is printed.
# 7. Run: mkvirtualenv temp
# 8. Run: workon
# 9. This time, the "temp" environment is included.
# 10. Run: workon temp
# 11. The virtual environment is activated.

首先是创建一个目录来存放未来创建的所有虚拟环境:

1
mkdir $HOME/.virtualenvs # 目录名随意,这里用的是.virtualenvs

.bashrc(bash) 或者.zshrc(zsh),根据使用的shell来定,添加:

1
2
3
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 # 设置虚拟环境默认Python解释器版本,可省略
source /path/to/this/file/virtualenvwrapper.sh

激活 shell 配置文件:

1
source .bashrc 或者 source .zshrc

使用

查看虚拟环境列表

1
workon 或者 lsvirtualenv

创建虚拟环境

1
mkvirtualenv [虚拟环境名]

启动/切换虚拟环境

1
workon [虚拟环境名]

删除虚拟环境

1
rmvirtualenv [虚拟环境名]

退出虚拟环境

1
deactivate