本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/17947601
python虚拟环境出现背景
1、多项目:实际工作中,我们电脑上可能需要开发不同的python项目(比如:ui自动化框架、接口自动化框架、开发的其它工具或平台等)
2、依赖不同:项目需要的依赖是不一样的,比如web ui自动化需要palywrite,而接口自动化就不需要这个依赖
3、版本不同:哪怕有相同依赖,它们的版本也可能不一样,比如python版本(可能老项目还是python2.x,新项目又需要3.8以上的版本)、需要的模块版本(比如redis,不同版本使用存在差异)
4、这些带来的问题:a.生成requirement.txt会有冗余依赖;b.每次为了用某个项目就得把部分或者全部依赖调整一下,是不是很麻烦?
探索:python中是否有java中依赖解决方案呢?
熟悉java的小伙伴肯定知道,不同项目的依赖,我们可以直接在pom文件中指定依赖及其版本即可
<!-- https://mvnrepository.com/artifact/io.qameta.allure/allure-testng -->
<dependency>
<groupId>io.qameta.allure</groupId>
<artifactId>allure-testng</artifactId>
<version>2.8.1</version>
</dependency>
在本地maven仓库,已经下载宿主机环境需要用到的不同版本的依赖,不同项目只需要指定需要的版本即可
但是python中呢?
我们先安装一个模块,pip install requests==2.26.0
下面提示已经安装过了,位置是d:\a_mytools\python38\lib\site-packages
site-packages目录下也可以看到requests2.26.0
我们再安装requests的2.27.0版本,pip install requests==2.27.0
下面可以看到,2.26.0被卸载了
site-packages目录下只能看到requests2.27.0,说明python不能保留多个版本的依赖
那么我们可以断定:python中没有类似java的依赖管理。
但是python可以使用虚拟环境(virtual environment),我们在宿主机上可以创建多个虚拟环境。
关于虚拟环境
就是和宿主机(本机,你的电脑)环境隔离的环境,我们可以在这个虚拟环境中安装需要的依赖及版本,它们被安装在虚拟环境自己的安装目录下(另外,py二进制文件也是独有的),也就是说,在宿主机(本机,你的电脑)环境是不能用到虚拟环境中的这些依赖的。
补充:宿主机环境上所有py项目的三方模块安装位置都是d:\a_mytools\python38\lib\site-packages