0%

python 虚拟环境virtualenv

简介

在开发Python应用程序的时候,经常会因为各个应用程序使用的环境或包不同,而导致应用程序无法运行,亦或者因为没有管理员权限无法安装相应的包。

此时就需要使用Python的强大虚拟机工具virtualenv了,为每个应用创建一套自己的Python运行环境。

安装

首先,我们用pip安装virtualenv:

1
$ pip3 install virtualenv

使用

第一步,创建目录:

1
2
$ mkdir myproject
$ cd myproject/

第二步,创建一个独立的Python运行环境,命名为venv:

1
2
3
4
5
6
7
8
9
10
$ virtualenv --no-site-packages venv

Using base prefix '/usr/local/.../Python.framework/Versions/3.4'

New python executable in venv/bin/python3.4

Also creating executable in venv/bin/python

Installing setuptools, pip, wheel...done.

命令virtualenv就可以创建一个独立的Python运行环境,我们还加上了参数–no-site-packages,这样,已经安装到系统Python环境中的所有第三方包都不会复制过来,这样,我们就得到了一个不带任何第三方包的“干净”的Python运行环境。

新建的Python环境被放到当前目录下的venv目录。有了venv这个Python环境,可以用source进入该环境:

第三部,调用虚拟环境

1
2
3
4
$ source venv/bin/activate

(venv)$

注意到命令提示符变了,有个(venv)前缀,表示当前环境是一个名为venv的Python环境。

第四步,安装各种包

下面正常安装各种第三方包,并运行python命令:

1
2
3
4
5
6
7
8
9
10
11
12
(venv)$ pip install jinja2

...

Successfully installed jinja2-2.7.3 markupsafe-0.23

(venv)$ python myapp.py

...



在venv环境下,用pip安装的包都被安装到venv这个环境下,系统Python环境不受任何影响。也就是说,venv环境是专门针对myproject这个应用创建的。

第五步,退出虚拟环境

退出当前的venv环境,使用deactivate命令:

1
2
3
4
(venv)$ deactivate

$

此时就回到了正常的环境,现在pip或python均是在系统Python环境下执行。

指定python版本

如果存在多个python解释器,可以选择指定一个Python解释器(比如python2.7),没有指定则由系统默认的解释器来搭建,比如下面的命令为使用python2.7来搭建。

1
$ virtualenv -p /usr/bin/python2.7 my_project_env

参考

处无为之事,行不言之教;作而弗始,生而弗有,为而弗恃,功成不居!

欢迎关注我的其它发布渠道