python virtualenv 虚拟环境的使用

虚拟环境是一个将不同项目所需求的依赖分别放在独立的地方的一个工具,它给这些工程创建虚拟的 Python环境。它解决了“项目X依赖于版本1.x,而项目Y需要项目4.x”的两难问题,而且使你的全局 site-packages 目录保持干净和可管理。软件工程师全都是有洁癖的,这就出现下面的神器 virtualenv。

安装 virtualenv

首先,我们用 pip 安装 virtualenv:

$ pip install virtualenv

测试你的安装

$ virtualenv --version

进入我们的项目目录,创建一个独立的 Python 运行环境,命名为 venv。virtualenv venv 将会在当前的目录中创建一个文件夹包含了 Python 可执行文件, 以及 pip 库的一份拷贝,这样就能安装其他包了。虚拟环境的名字(此例中是 venv ) 可以是任意的;若省略名字将会把文件均放在当前目录。

$ cd /data/myproject
$ 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.

你可以选择使用一个Python解释器(比如python2.7):

$ virtualenv -p /usr/bin/python2.7 venv

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

进入独立环境

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

$ source venv/bin/activate
(venv) $

以下命令会有相同效果:

$ . ./venv/bin/activate
(venv) $

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

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

(venv) $ pip3 install flask

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

退出独立环境

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

(venv) $ deactivate
$

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

完全可以针对每个应用创建独立的 Python 运行环境,这样就可以对每个应用的 Python 环境进行隔离。

virtualenv 是如何创建“独立”的 Python 运行环境的呢?原理很简单,就是把系统 Python 复制一份到 virtualenv 的环境,用命令 source venv/bin/activate 进入一个 virtualenv 环境时,virtualenv 会修改相关环境变量,让命令 python 和 pip 均指向当前的 virtualenv 环境。

自动激活环境工具 autoenv

当你 cd 进入一个包含 .env 的目录中,就会 autoenv 自动激活那个环境。

使用 brew 在 Mac OS X上安装它:

$ brew install autoenv

在 Linux 上:

$ git clone git://github.com/kennethreitz/autoenv.git ~/.autoenv
$ echo 'source ~/.autoenv/activate.sh' >> ~/.bashrc

项目地址:https://github.com/kennethreitz/autoenv/

其它注意

运行带 –no-site-packages 选项的 virtualenv 将不会包括全局安装的包。 这可用于保持包列表干净,以防以后需要访问它。(这在 virtualenv 1.7及之后是默认行为)

标签:Python 发布于:2019-11-10 22:37:11