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

大刀
• 阅读 2177

简介

在开发不同的应用时,我们可能需要不同的 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-packages 选项的 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...

点赞
收藏
评论区
推荐文章
Easter79 Easter79
4年前
springboot中切换配置(多个配置文件
问题描述:在springboot项目中可能有测试环境、开发环境、生产环境,在这些环境中我们可能要使用不同的配置,如果每次切换环境的时候都要重新写一份配置文件就很麻烦了,所以下面提供一种方法可以快速且简便的切换不同环境下的配置。解决方案:1、首先在resources目录下创建完整的配置文件(包括测试、开发、生产环境下的相关配置文件
CuterCorley CuterCorley
4年前
Python全栈(七)Flask框架之1.Flask简介与URL和视图介绍
一、虚拟环境介绍1.虚拟环境与全局环境有时候安装了一个Python库,可能在IDE如PyCharm中不能使用,这是因为:通过pip安装的库默认一般在全局环境中,而PyCharm一般会默认创建虚拟环境,所以两者的环境不一致,导致安装的包不能正常导入使用,解决办法有2种:在PyCharm虚拟环境中安装库,使库位于虚拟环境中将PyCharm的环
Stella981 Stella981
4年前
Hadoop streaming使用自定义python版本和第三方库
在使用Hadoop的过程中,遇到了自带python版本比较老的问题.下面以python3.7为例,演示如何在hadoop上使用自定义的python版本以及第三方库.1.在https://www.python.org下载Python3.7.2.gz包2.在linux环境下:tarxvfPthon3.7.2解压文件
Stella981 Stella981
4年前
Django学习之路2
virtualenv简介:virtualenv是一个创建独立python环境的工具。其要解决的最基本问题就是库的依赖和版本,以及间接权限。比如一个ubuntu环境默认安装了python2.7.11的版本,想要使用python3.5,如果再安装3.5,就会比较乱,再如pip安装的软件包,有一个项目用的事Django1.8的
Stella981 Stella981
4年前
Linux 下的 Python 多版本管理(pyenv)
简介提到Python环境管理,更多人可能会首先想到virtualenv。但与用于创建独立包环境的virtualenv不同,pyenv的作用仅限于维护不同版本的Python。它的使用不依赖于Python,是一个简单、独立的纯shell脚本工具。pyenv也以pyenvvirtualenv(https://www.oschin
Wesley13 Wesley13
4年前
python3.6虚拟环境以及flask的安装(常见问题)
准备基于python进行web应用开发Python3.3以上的版本通过venv模块原生支持虚拟环境,可以代替Python之前的virtualenv。该venv模块提供了创建轻量级“虚拟环境”,提供与系统Python的隔离支持。每一个虚拟环境都有其自己的Python二进制(允许有不同的Python版本创作环境),并且可以拥有自己独立的一套Python包
Stella981 Stella981
4年前
Python3的简介
Python3简介Python3与Python2之间是不兼容的,而且其中的差异性比较大。其实Python是linux上最常用的软件之一,但是linux目前的版本大部分还是使用Python2的,而且,在linux上依赖Python2的程序更多一些,所以Python3要代替Python2成为主流还需要几年的时间。我建议:
Stella981 Stella981
4年前
Python—版本和环境的管理工具(Pipenv)
pipenv简介虚拟环境本质是一个文件,是为了适应不同的项目而存在。pipenv相当于virtualenv和pip的合体。整合了pipvirtualenvPipfile,能够自动处理好包的依赖问题和虚拟环境问题,是最推荐使用的虚拟环境管理。过去用virtualenv管理requirements.txt文件可能会有
Stella981 Stella981
4年前
Python虚拟环境的创建和包下载
为什么使用虚拟环境因为直接在真实环境进行安装python的包会造成环境之间的污染,因此需要创建虚拟环境,原则上每一个项目都需要有一个独属于自己的虚拟环境Python项目的每次运行都需要启动环境,如果所有的模块都在一个环境中,不仅每次加载这些模块慢(尤其是开发过程中),并且依赖还可能相互冲突,甚至有些新引入的依赖会修改已安装模块的版
芝士年糕 芝士年糕
3年前
在centos上安装Anaconda
介绍:Anaconda包括Conda、Python以及一大堆安装好的工具包,比如:numpy、pandas等Miniconda包括Conda、Pythonconda是一个开源的包、环境管理器,可以用于在同一个机器上安装不同版本的软件包及其依赖,并能够在不同的环境之间切换环境:使用3A服务器远程搭建的centos上操作1、使用wget下载安装包wget ht
实际上手体验maven面对冲突Jar包的加载规则
一、问题背景相信大家在日常的开发过程中都遇到过Jar包冲突的问题,emm,在最近处理业务需求时我也遇到了不同版本jar包冲突导致项目加载出错的问题。主要是一个完整的项目会不可避免的使用第三方的Jar包来实现功能开发,各种第三方包之间可能会存在依赖关系,不同
大刀
大刀
Lv1
以前沧海难为水,除却巫山不是云。取次花丛懒回顾,半缘修道半缘君。
文章
2
粉丝
0
获赞
0