Python环境
既然有所谓的 虚拟环境(Virtual Environment),那么首先有必要解释一下,什么是环境。
这里的环境,指的就是 Python 代码的运行环境。它应该包含以下信息:
1、 Python 解释器,用哪个解释器来执行代码?(因为你可能装了很多python版本,2.7 3.4 3.6 3.8 etc 每个版本都可以理解为是解释器)。
2、Python 库的位置,该去哪里 import 所需要的模块呢?
3、可执行程序的位置,比如说安装了 pip,那么 pip 命令是在哪里呢?
其中第 1 个是最主要的,后面 2 个基本是围绕它确定的。
对应答案是:
1、python.exe,就是解释器。
2、Lib 文件夹,包括其中的 site-packages,后续安装的第三方模块和包都会出现在这里,所以偶尔出现问题,我们会造访这里。import XXX时都会来site-packages里面找。
3、Scripts 文件夹,后续安装的第三方包如果提供了命令,可执行文件就会出现在这里。例如pip.exe就是在此目录下,而 Lib 目录下保存的是 pip 的源码。当你使用pip时,会来这里找。
这里插几句关于Windows下的环境变量问题。
我们知道,可执行程序必须要在环境变量path里加以注册登记,否则当在cmd里运行该命令(可执行程序),会显示“不是内部或外部命令,也不是可运行的程序或批处理文件”。而且,其查找优先级为先找系统变量,再找用户变量。并且,对于同一个命令,只找到第一次找到的那个版本即结束。也就是说,比如,如果你在path里先后加了多个python版本,那么,系统会把path变量中写在最前面的第一个python版本作为默认的python版本。
也就是说,如果在这样的Windows环境里,如果你要切换python版本,将不得不不断来回地修改path变量的内容。显然,这样十分繁琐。所以,一些虚拟环境工具就应运而生。
![7dd96e35f45fa11d122c14866d0ea7a0.png](https://i-blog.csdnimg.cn/blog_migrate/fd11041ac985e4b22ed79c4ad0a1ab31.jpeg)
当构造虚拟环境时,会在虚拟环境中构造出比较完整的一套工具,包括Lib,Scripts。由于标准库几乎不会变动,各个不同python版本共享标准库,所以不用另行构造。而不同版本的python中的python.exe是不同的,所以需要单独构造。同理,不同版本下的第三方模块和包也很可能是不同的(因为他们往往和python.exe强烈相关),所以他们都会单独构造一份。