python虚拟环境系列(一):虚拟环境出现背景及python依赖管理探索

发布时间 2024-01-07 10:16:06作者: 全栈测试笔记

 

本系列汇总,请查看这里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