在本文中可以了解以下内容:
- 为什么需要python虚拟环境
- 什么是python虚拟环境
- 使用python虚拟环境
为什么需要python虚拟环境
默认情况下,系统中所有的python项目都会使用相同的路径来保存第三方库site packages
。初看之下,这似乎没有什么问题,对于python标准库来说,这确实不是问题,但是对于第三方库来说,却不是这样的。
不同的python对相同的第三方库的依赖可能存在冲突,例如下面这种情况:
项目一和项目二依赖相同第三方库的不同版本,项目一使用v1.0版本,项目二则使用v3.0版本。这对python着实是一个挑战,因为在项目中仅是保存了库的名字,并没有区分不同版本。site packages
路径无法区分v1.0版本和v3.0版本。
如何解决这个问题呢?就需要引入python虚拟环境。
什么是python虚拟环境
python虚拟环境为不同的项目提供了独立的环境,在每个虚拟环境中,可以使用自己的python版本和依赖的第三方库,不同的虚拟环境之间互不影响。
对于上面提到的问题,通过使用python虚拟环境可以轻易得到解决,只需要为项目一和项目二分别创建相互独立的虚拟环境。在虚拟环境中安装各自所需要的依赖即可。
使用虚拟环境
安装python虚拟环境
在python3的标准库中,提供了venv
模块来管理虚拟环境,如果使用的是python2,需要通过pip
来安装virtualenv
工具。
执行命令 pip install virtualenv
使用python虚拟环境
通过命令创建路径test_venv,并在此路径下创建虚拟环境。
mkdir test_venv && cd test_venv
- 使用virtualenv创建python2的虚拟环境
# 创建python2的虚拟环境
virtualenv -p python2 ./venv2
# 激活虚拟环境
source ./venv2/bin/activate
# 查看当前虚拟环境中的python
(venv2)$ which python
../test_env/venv2/bin/python
# 可以看到当前环境使用的python为venv2中的python
# 去激活虚拟环境,执行deactivate
deactivate
- 使用virtualenv创建python3的虚拟环境,方法与python2相同,只需指定为python3即可。
# 创建python3的虚拟环境
virtualenv -p python3 ./venv3
# 激活虚拟环境
source ./venv3/bin/activate
# 查看当前虚拟环境中的python
(venv3)$ which python
../test_env/venv3/bin/python
# 可以看到当前换进使用的python为venv3中的python
# 去激活
deactivate
使用python3 的venv模块创建虚拟环境
# 创建虚拟环境
python3 -m venv ./env3
# 激活虚拟环境
source ./env3/bin/activate
# 查看当前使用的python路径
(env3)$ which python
# ../test_env/env3/bin/python
# 去激活
deactivate
通过上面的命令可以看出虚拟环境是如何工作的,在激活的虚拟环境中,使用了不同python路径,并且修改了环境变量$PATH,将../test_env/env3/bin
添加到$PATH。
在虚拟环境中,默认不包含任何已有的第三方库site packages
,在激活的虚拟环境可以通过pip
来安装需要的第三方库。
在实际使用中,我们可能还会遇到同时需要安装多个python版本的情况,例如,同时使用python3.6和python3.7,这是就会用到python版本管理工具pyenv
,请参见pyenv
相关内容。