提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、虚拟环境是什么?
在解释虚拟环境是什么之前,我们首先要知道什么是环境。
这里的环境,指的就是 Python 代码的运行环境。它应该包含以下信息:
- Python 解释器,用哪个解释器来执行代码?
- Python 库的位置,该去哪里
import
所需要的模块呢? - 可执行程序的位置,比如说安装了
pip
,那么pip
命令是在哪里呢?
对应到Python文件中的内容是:
python.exe
Lib
文件夹,包括其中的site-packages
Scripts
文件夹
简而言之,虚拟环境就是 Python 环境的一个副本。
要得到这么一个副本,首先:
- 要给它单独找个文件夹存起来
- 要给它取个名字
这个文件夹的名字也就是这个虚拟环境的名字,在这个文件夹下面有这些东西:
- 一个
python.exe
- 一个
Scripts
目录 - 一个
Lib
目录
这里和普通环境有 2 点不一样的地方:
python.exe
也放在了Scripts
目录下面Lib
目录下面只有site-packages
目录
二、虚拟环境存在的意义
当我们安装一个 Python 程序或者库的时候,一般情况下我们虽然是想要安装 1 个包,比如说, pip install django
。然而实际安装的都是一堆包。这些包默认都会安装到 Python 环境的 site-packages
目录下面。
下次再安装其它包时,也是如此。因为同一个库,只能在一个环境中存在一份,那么这其中如果发现了某个依赖包已经存在,只能大家公用。
这样下去,说不定哪一天这中间就出现了版本不兼容。
三、怎样创建一个虚拟环境并激活
创建虚拟环境:python -m venv .venv
激活虚拟环境:.venv/Scripts/Activate.ps1
总结
不同项目可以使用不同的虚拟环境从而解决依赖冲突的问题
使用 pip install
的时候可以通过 -r
选项指定一个 requirements
文件,这样就能批量安装所有依赖。
在 requirements
里面可以精确的指定安装包版本,有效地避免不兼容问题。
执行 pip freeze
可以把当前环境安装的包以 requirements
的格式输出。