Linux下使用 virtualenv 虚拟独立 Python 环境

栏目: Python · 发布时间: 5年前

内容简介:在开发不同的应用时,我们可能需要不同的 Python 版本,同时可能还需要处理包的依赖、版本和间接权限问题。在同系统中,要解决这些问题往往非常棘手。在 Python 的开发环境中,为解决这样的问题最常用的方法是使用用 VirtualEnv 创建的多个 Python 环境相互独立,互不影响,它能够:这样的虚拟环境是在 Python 解释器上的一个私有复制。这样我们就可以在一个隔绝的环境下安装 packages,不会影响到系统中全局的 Python 解释器。虚拟环境非常有用,因为它可以防止系统出现包管理混乱和版

简介

在开发不同的应用时,我们可能需要不同的 Python 版本,同时可能还需要处理包的依赖、版本和间接权限问题。在同系统中,要解决这些问题往往非常棘手。在 Python 的开发环境中,为解决这样的问题最常用的方法是使用 virtualenv 包。 Virtualenv 是一个用来创建独立的 Python 环境的包,就类似于一个沙箱,将开发运行环境与系统隔离开来。

用 VirtualEnv 创建的多个 Python 环境相互独立,互不影响,它能够:

  • 在没有权限的情况下安装新套件
  • 不同应用可以使用不同的套件版本
  • 套件升级不影响其他应用

这样的虚拟环境是在 Python 解释器上的一个私有复制。这样我们就可以在一个隔绝的环境下安装 packages,不会影响到系统中全局的 Python 解释器。虚拟环境非常有用,因为它可以防止系统出现包管理混乱和版本冲突的问题。为每个应用程序创建一个虚拟环境可以确保应用程序只能访问它们自己使用的包,从而全局解释器只作为一个源且依然整洁干净去更多的虚拟环境。另一个好处是,虚拟环境不需要管理员权限。

安装

这里只介绍 Linux 系统下的安装。在 Linux 下的安装方法多种多样,可以通过源码源码安装,也可以用 Python 的包管理工具 easy_installpip 安装,例如:

$ sudo easy_install virtualenv

或者:

$ sudo pip install virtualenv

如果你使用的是 Ubuntu 及其衍生版本,还可以通过如下方式安装:

$ sudo apt-get install python-virtualenv

创建虚拟环境

安装完成之后便可用 virtualenv 命令创建虚拟环境,只需要指定一个虚拟环境的名称即可:

$ virtualenv kvenv

创建过程输出如下信息:

Running virtualenv with interpreter /usr/bin/python2
New python executable in kvenv/bin/python2
Also creating executable in kvenv/bin/python
Installing setuptools, pip...done.

创建完成后会生成一个 kvenv 目录。也可以根据需要加上参数来指定所创建的虚拟环境的行为,例如加上 -p 参数指定 Python 版本。

激活虚拟环境

要激活创建的虚拟环境可以用如下命令:

$ source kvenv/bin/activate

激活成功后会在命令提示符前边加上 (kvenv) 字符。此时,我们 which python 看有什么不同:

(kvenv)konghy$[~] => which python
/home/konghy/kvenv/bin/python

会发现此时的 python 解释器执行的是虚拟环境下的,而不是系统全局的。Virtualenv 拷贝了 Python 可执行文件的副本,并创建一些有用的脚本和安装了项目需要的软件包,你可以在项目的整个生命周期中安装/升级/删除这些包。 它也修改了一些搜索路径,例如PYTHONPATH,以确保:

  • 当安装包时,它们被安装在当前活动的virtualenv里,而不是系统范围内的Python路径。
  • 当import代码时,virtualenv将优先采取本环境中安装的包,而不是系统Python目录中安装的包。

还有一点比较重要,在默认情况下,所有安装在系统范围内的包对于 virtualenv 是可见的。 这意味着如果你将 simplejson 安装在您的系统 Python 目录中,它会自动提供给所有的 virtualenvs 使用。 这种行为可以被更改,在创建 virtualenv 时增加 --no-site-package s 选项的 virtualenv 就不会读取系统包,如下:

$ virtualenv kvenv --no-site-packages

退出虚拟环境 用如下命令:

$ deactivate

在虚拟环境中安装包

大多数的 Python 包是通过 pip 程序安装的,在创建虚拟环境的时候 virtualenv 会自动添加进去。当一个虚拟环境被激活后,pip 程序的位置会被添加到 PATH 中。比如,安装 Flask 到虚拟环境中,使用如下命令:

$ pip install flask

安装过程会将 Flask 和它的依赖集安装到虚拟环境中。验证是否安装成功,可以用如下方法:

(venv)$ python
>>> import flask
>>>

用如下命令可以查看当前环境安装了哪些包:

$ pip freeze

参考资料

http://flask123.sinaapp.com/a...

http://www.nowamagic.net/acad...


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

失控的未来

失控的未来

[美]约翰·C·黑文斯 / 仝琳 / 中信出版集团 / 2017-4-1 / 59.00元

【编辑推荐】 20年前,尼古拉•尼葛洛庞帝的《数字化生存》描绘了数字科技给人们的工作、生活、教育和娱乐带来的冲击和各种值得思考的问题。数字化生存是一种社会生存状态,即以数字化形式显现的存在状态。20年后,本书以一种畅想的形式,展望了未来智能机器人与人类工作、生活紧密相联的场景。作者尤其对智能机器人与人类的关系,通过假设的场景进行了大胆有趣的描述,提出了人工智能的未来可能会面临的一些问题。黑文......一起来看看 《失控的未来》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

随机密码生成器
随机密码生成器

多种字符组合密码

SHA 加密
SHA 加密

SHA 加密工具