在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.4。所有第三方的包都会被pip安装到Python3的site-packages目录下。

如果我们要同时开发多个应用程序,那这些应用程序都会共用一个Python,就是安装在系统的Python 3。如果应用A需要jinja 2.7,而应用B需要jinja 2.6怎么办?

这种情况下,每个应用可能需要各自拥有一套“独立”的Python运行环境。virtualenv就是用来为一个应用创建一套“隔离”的Python运行环境。

首先,我们用pip安装virtualenv:

$ pip3 install virtualenv

然后,假定我们要开发一个新的项目,需要一套独立的Python运行环境,可以这么做:

第一步,创建目录:

Mac:~ michael$ mkdir myproject
Mac:~ michael$ cd myproject/
Mac:myproject michael$

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

Mac:myproject michael$ 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进入该环境:

Mac:myproject michael$ source venv/bin/activate
(venv)Mac:myproject michael$

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

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

(venv)Mac:myproject michael$ pip install jinja2
...
Successfully installed jinja2-2.7.3 markupsafe-0.23
(venv)Mac:myproject michael$ python myapp.py
...

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

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

(venv)Mac:myproject michael$ deactivate
Mac:myproject michael$

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

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

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

小结

virtualenv为应用提供了隔离的Python运行环境,解决了不同应用间多版本的冲突问题。

转自

https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001432712108300322c61f256c74803b43bfd65c6f8d0d0000

virtualenv简介相关推荐

  1. virtualenv安装和使用

    virtualenv简介 在开发Python应用程序的时候,我们的系统上通常只会安装一个Python版本:例如 3.7.所有使用 pip 安装的第三方包都会被安装到Python的site-packag ...

  2. Flask 实战:如何从零开发“知乎”

    作为当下十分火热的问答社区,知乎聚集了大量问题者和答题者. 但不少朋友在逛知乎的同时,也不禁想要开发一个像"知乎"这样的问答社区,既能够问题答题,也能拥有用户评论.点赞.收藏.浏览 ...

  3. centos python_【建议收藏】Python虚拟环境最全教程,看这篇就够了!

    本篇文章主要围绕Pyenv, Virtualenv, Virtualenvwrapper三个Python库展开讨论. 熟悉Python的朋友一定知道python虚拟环境, 它可以让我们在不同项目中拥有 ...

  4. Linux云服务器下配置Scrapy并抓取数据

    基础装备: Linux云服务器(阿里云Ubuntu 16.04):   建立远程连接的软件(这里用的是XShell): 友情链接: Scrapy入门教程:http://scrapy-chs.readt ...

  5. windows10下使用virtualenv虚拟技术,管理多个python版本,多个项目包环境

    windows10下使用virtualenv虚拟技术,管理多个python解释器版本,多个项目包环境 文章目录 windows10下使用virtualenv虚拟技术,管理多个python解释器版本,多 ...

  6. 《Web安全之机器学习入门》一 2.2 TensorFlow简介与环境搭建

    2.2 TensorFlow简介与环境搭建 TensorFlow是一个采用数据流图.用于数值计算的开源软件库(见图2-5).节点在图中表示数学操作,图中的线则表示在节点间相互联系的多维数据数组,即张量 ...

  7. anaconda的python使用教程-Python,Anaconda简介安装使用教程

    ① 首先,自己也是闲来无趣刚刚开始接触Python这门语言,收集了一些关于一些初级的学前准备资料仅供大家参考 Python简介: Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚 ...

  8. Py之configobj:configobj的简介、安装、使用方法之详细攻略

    Py之configobj:configobj的简介.安装.使用方法之详细攻略 目录 configobj的简介 configobj的安装 configobj的使用方法 configobj的简介 Conf ...

  9. Python之pip:Python语言中的pip的简介、安装、使用方法之详细攻略

    Python之pip:Python语言中的pip的简介.入门.使用方法之详细攻略 目录 pip的简介 pip的安装 1.Linux之Ubuntu系统安装pip3 pip的使用方法 1.pip命令集合 ...

最新文章

  1. 渡神纪帧数测试软件,渡神纪芬尼斯崛起配置要求高吗 渡神纪配置要求详细介绍_游侠网...
  2. 20 亿个数字在 4G 内存中如何去重排序:快来试一试 BitMap
  3. Java中的集合类--复习
  4. 缓存穿透、缓存击穿、缓存雪崩及其解决方案
  5. python爬虫怎么爬同一个网站的多页数据-请问爬虫如何爬取动态页面的内容?
  6. Qt学习笔记5-信号槽机制
  7. 科大星云诗社动态20220114
  8. TFboys:使用Tensorflow搭建深层网络分类器
  9. uva10780 - Again Prime? No time
  10. tomcat9-jenkins:insufficient free space available after evicting expired cache entries-consider
  11. insertion-sort-list——链表、插入排序、链表插入
  12. python程序设计基础试题及答案_智慧职教2020Python程序设计基础题目及答案
  13. 11.11京东全球好物节战报出炉!苹果、华为全员卖疯...
  14. 社区奖品之金士顿1G U盘
  15. java 实现excel与txt 相互转化
  16. 模2除法与二进制除法
  17. Qt QListView QStringListModel用法详解
  18. 润乾报表CookBook与使用
  19. 全国计算机等级考试信息安全三级笔记
  20. 【Web技术】1348- 聊聊水印实现的几种方式

热门文章

  1. PS抠图方法、技巧大集合
  2. 是计算机数控系统的核心,监管目标是监管者追求的最好效果或最好状态。()
  3. mysql表情符号显示?问号
  4. HTML基础form表单元素
  5. CocosCreator热更新(v1.10.2)
  6. OWL Ontology
  7. 一键绕过ID锁激活,为什么很多人都会失败?绕ID这一篇就够了
  8. 使PPT文本框中的文字自动换行,如果搞定?
  9. Matlab:清除表中的杂乱数据和缺失数据
  10. 前端点击图片的某个区域进行映射