4 Python虚拟环境介绍
本篇是 Python 系列教程第 4 篇,更多内容敬请访问我的 Python 合集
1 什么是虚拟环境
Python的虚拟环境一般存在于项目的根目录,其作用其实和Vue项目的node_modules文件夹差不多,存放一些本项目的依赖包。与node_modules不同的是node_modules只是用来存放外部依赖包,而Python虚拟环境还存放了可执行文件和Python解释器(即python.exe)。
在了解虚拟环境之前,我们先来了解一下真实环境,Python真实环境包含以下内容
Lib:一些包
- site-packages:安装的外部包
- 标准库:Python预装的模块和包
Script:可执行文件,如pip.exe
python.exe:python解释器
虚拟环境可以理解为把真实环境复制了一份,供项目单独使用。但是复制会有一个问题,就是标准库是非常大的,把标准库复制到虚拟环境里是很不划算的。
所以虚拟环境和真实环境的第一个区别点就是不包含但引用标准库。第二个区别点是虚拟环境把python.exe也放到了Scripts目录下。
项目的虚拟环境目录结构如图:
如下图,这个是我项目的虚拟环境
2 如何创建和激活
2.1 开发工具创建
PyCharm在创建项目的时候会自动创建虚拟环境,如下图
在创建的项目里打开控制台可以发现路径前面多了一个虚拟环境目录名,如下图
这样就代表虚拟环境已经被自动激活了。这时使用pip安装外部包就会安装到本虚拟环境的site-packages目录下而不是Python安装目录下。
2.2 命令行创建
我们新建一个文件夹demo2然后用PyCharm打开,这时是没有虚拟环境的,我们来创建一个虚拟环境,注意不要和demo1的虚拟环境重名,不然会导致意想不到的bug。
创建虚拟环境的命令(这里使用的是venv工具),最后一个单词是虚拟环境名称
python -m venv .venv
创建好后的结构如下图
每次打开一个新控制台都需手动执行activate进行激活(PyCharm自动创建的虚拟环境就不需要手动激活),激活成功后可以看到路径前有虚拟环境标识了。如下图
接下来在此控制台输入的所有命令都是在虚拟环境进行的了。
如果不想每次打开控制台都手动激活,可以在setting里改配置,如下图
2.3 虚拟环境都做了些什么
其实虚拟环境并没有做什么高大上的操作,它只是把我们的环境变量改了一下。我们可以在虚拟环境中和普通的控制台分别把环境变量打印出来看看
可以看到虚拟环境在环境变量前多加了一串虚拟环境的可执行文件的路径D:\PycharmProjects\demo2\.venv\Scripts;
,这也就解释了为啥虚拟环境在复制的时候把python.exe放到Scripts目录下了,因为方便环境变量配置。
由于环境变量是顺序优先,所以虚拟环境就成功生效了。
1和2 小结:
所以,简单来说,虚拟环境就是把python.exe、pip.exe等可执行文件复制了一份自己使用,并且在激活的时候更改本控制台的环境变量让pip install的包都安装到虚拟环境自己的site-packages目录下。
3 如何复制虚拟环境
当我们开发好一个程序,想让别人也使用,最好让第二个人得到一个跟我一模一样的虚拟环境。该怎么整呢?
其实复制虚拟环境用到了pip的命令
pip freeze > requirements.txt
这样另一个人就可以用这个requirements.txt安装相同的依赖包了,注意要事先创建虚拟环境并激活
pip install -r .\requirements.txt
如下图,我先把demo2的.venv文件给删了,然后执行命令上述命令安装demo1的依赖包