简述Python虚拟环境(图解)

前言 对于初学者来说,会出现一些环境问题,对于虚拟环境和为什么使用虚拟环境不是很理解,本文的目的在于解决这些问题。
相关链接:
Python安装第三方库提示“既不是内部或外部命令也不是可运行的程序或批处理文件”解决办法
一、python和pip命令是如何工作的 首先说说python命令正常工作的原理,以Windows为例,当我们的Python装好后,可执行程序是一个.exe文件(其他系统中为其他形式的可执行文件)。
直接打开python.exe,就会打开一个输入命令的窗口。
但如果我们使用命令行输入Python,也可以启用Python的命令行,这是什么原理呢?
简述Python虚拟环境(图解)
文章图片

揭晓答案:系统中有一个位置,告诉终端“我知道Python这个程序在哪”。
下面就可以聊一聊环境变量了。
二、环境变量 什么是环境变量?
想象一个场景,如果你第一次上学,中午打算去食堂吃饭,但又不知道食堂在哪。
你可以自己把整个校园都转一遍,最终靠自己的努力找到食堂,然后进去吃饭;
当然也可以直接问老师,老师告诉你“在某个路口左转,步行500米之后到达”。
简述Python虚拟环境(图解)
文章图片

事实上,计算机也是需要靠“问路”的方式来寻找资源的,所以就存在两种情况:
用户自己寻找,找到这个资源放在哪里,然后让计算机按照这个路径执行;
在计算机中放一张“地图”,地图中标出了资源的位置,然后计算机只需要看“地图”,就知道某个软件放在哪里。
这张“地图”,就是环境变量。
简述Python虚拟环境(图解)
文章图片

实际运行过程中,如果不指定资源的目录,计算机只会在当前目录寻找(System32),如果找不到,就去环境变量中寻找。
简述Python虚拟环境(图解)
文章图片

如果计算机找不到找不到怎么办呢,比如输入Python,计算机找不到和Python有关的任何资源,它就只能提示“既不是内部或外部命令也不是可运行的程序或批处理文件”了...
简述Python虚拟环境(图解)
文章图片

环境变量的本质是键值对:也就是 变量名 = 路径。
当Python安装好之后,就可以选择,把Python这个软件加入环境变量,这样系统就知道Python的家住在C盘的目录下了。
简述Python虚拟环境(图解)
文章图片

但是这样有个小问题在于,
如果不同的项目需要不同的Python版本怎么办?
如果不同的项目需要的第三方包互相冲突怎么办?
这样就诞生了一个叫做“虚拟环境”的功能。
三、虚拟环境 对于一般情况,Python和pip命令,他们的路径永久的写在安装目录下。
C:/Program Files/Python3.x/Python.exe
简述Python虚拟环境(图解)
文章图片

如果想切换版本,最笨的方法就是,安装多个Python,然后每次手动设置环境变量,但这样效率太低了。
虚拟环境的作用在于:在全局的环境变量之外,额外生成一组Python文件,并且在这个项目中,把环境变量临时的指向这组路径,而不再是全局路径了。
例如:D:/project/venv/python3.x/python.exe
(venv是Python原生的虚拟环境的目录)
简述Python虚拟环境(图解)
文章图片

如果有多个项目,规范的做法是每个项目一个虚拟环境。
简述Python虚拟环境(图解)
文章图片

这样,就可以在不影响全局环境的情况下,对于虚拟环境安装各种第三方包。
一方面,可以给不同的项目使用不同的Python版本,使各个项目互不干扰。
另一方面,如果虚拟环境出现了各种问题,只需要把它删了重新创建一个即可,并不会影响其他项目的环境。
四、总结

  • Windows中,终端输入Python的原理是:执行了Python.exe(其他系统为其他形式的可执行文件)。
  • 之所以不需要用户输入路径,是因为系统知道Python.exe在哪。
  • 计算机查找Python在哪,是通过环境变量。
  • 为了解决不同版本和不同包的冲突,出现了虚拟环境。
  • 虚拟环境创建了另一组独立的环境,包含Python.exe和pip.exe等文件。
  • 虚拟环境生效的原理是:让Python的环境变量临时的指向另外的Python文件,而不是全局的环境变量。
后记 【简述Python虚拟环境(图解)】对于接触过前端的同学来说,虚拟环境的功能和NVM一样,NVM也是用来管理多版本Node.js共存问题的管理器。

    推荐阅读