什么是虚拟环境

我们在使用Python的时候,通常用pip来进行包管理。比如我们要安装一个叫requests的库,那么我们就会采用以下命令去安装:

pip install requests

那你知道,这个requests被安装到哪里去了吗?

其实,这个requests库被安装到 Python安装目录/Lib/site-packages下面。要知道,site-packages是一个全局包路径

啥意思呢?就是说,我安装的requests这个库对这台电脑这个版本的Python都生效。

那这样会造成一个问题:

如果requests在1.0版本和1.1版本发生了较大变化,比如:

1.0版本的时候有个方法叫requests.get,到了1.1版本,这个包改名叫requests.got, 然后还支持了不少新特性

如果我有一个很老的项目,一直用的是1.0的版本,而我现在写了一个新项目,又想用到1.1版本的最新特性。

那我如果只有一个版本的requests,我就没法兼容新项目旧项目了。

所以我们有了虚拟环境的概念,其实也可以说是隔离环境。说简单点就是,这个python的库管理跟随你的项目走,你项目里就算用到100个库,也不会给你装到全局去,这样就隔离了全局的库。

安装virtualenv

而达到这样的目的,都是基于一款python的库: virtualenv。(它支持python2和3)

pip3 install virtualenv

tips: 有的python库,他不一定是给python代码调用的,你可以把它想象成一个可执行程序,比如我们常用的gunicorn,虽然是通过pip安装,但是安装好了之后它是一个可执行程序

创建虚拟环境

安装好virtualenv以后,我们就可以来开辟一个虚拟环境,用于隔离全局的库了。

virtualenv venv

在我们的项目根目录下执行这个命令,可以看到一些提示:

启用虚拟环境

我们根目录下会多一个venv的文件夹,里面有点东西。

别急,我们还得先激活这个虚拟环境

  • Mac/Linux
source venv/bin/activate
  • Windows
venv\Scripts\activate

其实可以看到,venv的Scripts里面有个activate.bat(激活虚拟环境脚本),而Unix系统下自带source,所以有些区别。

接着你就可以在虚拟环境畅游了,你所有安装/卸载的包都会在venv目录下被安排的服服帖帖的,不会被影响也不会影响到全局的库。

退出虚拟环境

source venv/bin/deactivate
  • Windows
venv\Scripts\deactivate

用deactivate就好了,这样你的包管理又回到了全局,venv标识也消失不见了。

其实这个很像node_modules,node_modules在项目的根目录生成,并通过package.json进行包的版本管理,不影响全局模式,非常好用。

简单的说就是各玩各的,互不干扰

标题从3分钟->5分钟,最后改为几分钟,你读完了么?反正我是读完了!

几分钟就能学会的Python虚拟环境教程的更多相关文章

  1. python虚拟环境配置(下)

    前言 嘿,各位小伙伴们,晚上好呀,新年快乐,注意预防流感哈,就不要出去浪了,万一中奖了,嗯...,还是当个宅男,宅男无敌,哈哈哈, 过年了,村都被封了,哎,出都出不去,想着干点啥,就把以前没完善的继续 ...

  2. (zhuan)Python 虚拟环境:Virtualenv

    Python 虚拟环境:Virtualenv zhuanzi: http://liuzhijun.iteye.com/blog/1872241 virtualenv virtualenv用于创建独立的 ...

  3. CentOS使用virtualenv搭建独立的Python环境-python虚拟环境

    CentOS使用virtualenv搭建独立的Python环境-python虚拟环境 virtualenv可以搭建虚拟且独立的python环境,可以使每个项目环境与其他项目独立开来,保持环境的干净,解 ...

  4. Python 虚拟环境Virtualenv

    本人也是Python爱好者,众所周知,Python扩展多,每次为了测试,安装各种各样的扩展,这样导致本地的Python环境非常混乱,就有人想到搞个隔离环境  和 本地环境没有关系,随时可以删除这个隔离 ...

  5. 【转载】教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神

    原文:教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神 本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http:/ ...

  6. 10分钟 教你学会Linux/Unix下的vi文本编辑器

    10分钟 教你学会Linux/Unix下的vi文本编辑器 vi编辑器是Unix/Linux系统管理员必须学会使用的编辑器.看了不少关于vi的资料,终于得到这个总结.不敢独享,和你们共享. 首先,记住v ...

  7. python虚拟环境Virtualenvwrapper无法升降级虚拟环境软件解决方法

    virtualenv用于创建独立的Python环境,多个Python相互独立,互不影响,它能够在没有权限的情况下安装新套件,不同应用可以使用不同的套件版本,套件升级不影响其他应用. Virtaulen ...

  8. Python学习笔记4-如何快速的学会一个Python的模块、方法、关键字

    想要快速的学会一个Python的模块和方法,两个函数必须要知道,那就是dir()和help() dir():能够快速的以集合的型式列出该模块下的所有内容(类.常量.方法)例: #--encoding: ...

  9. python虚拟环境的使用

    一. 安装 sudo apt-get install python-virtualenv 二. 创建环境 sudo virtualenv Myenv 创建完全隔离的Python环境,实质是创建了一个文 ...

随机推荐

  1. C#中的几种锁:用户模式锁、内核模式锁、动态计数、监视锁

    参考网址: https://blog.csdn.net/weixin_43989331/article/details/105356008 C#中的几种锁:用户模式锁.内核模式锁.动态计数.监视锁介绍 ...

  2. 并发容器之ConcurrentHashMap

    JDK5中添加了新的concurrent包,相对同步容器而言,并发容器通过一些机制改进了并发性能.因为同步容器将所有对容器状态的访问都 串行化了,这样保证了线程的安全性,所以这种方法的代价就是严重降低 ...

  3. ubuntu编译安装python3.6.5

    去官网下载安装包放到~/software/   下 1更新软件库 sudo apt-get update 2安装相应的开发库 sudo apt-get install zlib1g-dev libbz ...

  4. restore db fail

    System.Data.SqlClient.SqlError: The operating system returned the error '5(Access is denied.)' while ...

  5. jQuery中获取属性值:attr()、html()、text()、val()等(一)

    <!DOCTYPE html> <html> <head> <title>01_basic.html</title> <meta na ...

  6. java和js中for循环的区别

    java中for循环,先执行语句后循环 for (int i=1;i<10;i++){ for(int b=1;b<=i;b++){ System.out.print(b+"*& ...

  7. promise加载图片

    实现一个图片的加载:设置第一张图片加载1s之后加载第二张图片: <!DOCTYPE html> <html> <head> <meta charset=&qu ...

  8. windows 10 + tensorflow-gpu 环境搭建

    安装过程可基本按照ubuntu装法,参考https://www.cnblogs.com/xbit/p/9768238.html 其中: conda配置文件:C:\Users\Administrator ...

  9. 求证:-1/2 <= {2x} - {x} < 1/2

    证:由 x = [x] + {x},知2x = 2[x] + 2{x}. 1.若{x}落在[0,1/2),则2{x} < 1,于是有{2x} = 2{x},此时 {2x} - {x} = {x} ...

  10. Python3实现打格点算法的GPU加速

    技术背景 在数学和物理学领域,总是充满了各种连续的函数模型.而当我们用现代计算机的技术去处理这些问题的时候,事实上是无法直接处理连续模型的,绝大多数的情况下都要转化成一个离散的模型再进行数值的计算.比 ...