【01】为什么需要虚拟环境?

为什么需要虚拟环境?

这也是我在开始学习Python时的一个困惑,可能能因为我当时知识碎片化的学习,一直都是用的非虚拟环境,当看到很多地方只是告诉我们要通过虚拟环境来开发Python,却没有告诉我们为什么要这样做,我的心里就一直有这个困惑,直到我开发了两个以上的项目,我才意识到,其实这一切都基于版本控制(所谓的“环境”),那么版本控制究竟有多重要呢?

我最开始理解的,我们引用的第三方库就像是我们手机里的各类APP,我们的Python就像是手机系统。那么Python有新版本了,从3.6升级到了3.7,又升级到3.8、3.9,那么我们在运行新项目的时候,我们只需要将Python升级到最新版本,就像我们的iPhone手机从iOS 6 一年一年地升级到 iOS 14那么自然!~

然而,现实情况是,版本的升级,意味着内部实现原理的改变,而这意味兼容性的问题。最直观的例子就是,假设原先的一个方法,它的语法完全变了,而这时候如果你集成了多个第三方库,而每个第三方库只支持特定版本及以上的Python特性,兼容性的复杂程度将成几何形成长。这还只是一个项目,当多个项目引用的虽然是同一个第三方库,可是它们依赖的是不同的版本,怎么办?虚拟环境就是创建了一个专属空间,当前项目的所有依赖,都从这个专属空间里引用,即 专属的第三方库,专属的指定版本

专属空间,才是虚拟环境的意义所在。

每个深刻理解版本控制的重要性的开发者,一定是之前踩过不少这样的坑,所以我们哪怕用高中时学过的【控制变量法】也能联想到,版本控制的精髓,就是控制版本最好不要变化,如果一定要升级,请同时测量所有其他的变量(引用到的第三方库)是否支持,不会出现预期以外的程序BUG!

对于服务器的项目尤其重要,因为它是一个服务于大量设备的载体,每天要承接大量的服务,并且有时它还需要快速移植到其它设备上,虚拟环境其实是提供了一个方便移植的版本集群的抓手,让你能够快速处理那些本来深度耦合在项目内部的第三方库。

因此,我推荐使用pipenv来作为第三方库及版本控制工具。它自动生成的版本配置文件,可以帮我们省去很多事儿。这个东西后面搭建时会用到,但在此我只会讲简单提到,有时间我会专门开一篇文章讲它的用法,并把链接贴到此处。

你可能感兴趣的:(【01】为什么需要虚拟环境?)