pipenv安装依赖工具包——测试工程师Python开发实战(04)

发表于:2023-7-18 09:44

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:胡通    来源:51Testing软件测试网原创

#
Python
  1.4.6  pipenv安装依赖工具包
  接下来,我们用pipenv安装requests库试一下,命令为pipenv install requests。pipenv安装依赖工具包成功如图1-15所示。
图1-15  pipenv安装依赖工具包成功
  另外,pipenv install提供了--dev参数,用于区分需要部署到线上的开发包和只需要在测试环境中执行的包,这样就能明确不需要部署在线上的包,尽可能保证包干净。
  提示
  第一次安装包会比较慢,因为安装过程包含创建虚拟环境的过程。另外,如果使用默认安装源,大多数情况下会卡在锁定阶段,一般解决办法有两个。
  (1)更改安装源,修改项目目录下的Pipfile文件中url后边的内容。pipenv本身就是基于pip的,所以也可以更换安装源。例如下面的Pipfile文件中使用阿里云提供的安装源:
  (2)使用--skip-lock参数跳过锁定过程,锁定过程会比较费时,可以等真正完成项目开发要提交到仓库时再去锁定。
  1.4.7  常用命令
  一般通过命令pipenv -h可以看到pipenv的命令参数和命令示例,如图1-16和图1-17所示。
图1-16  pipenv的命令参数
图1-17  pipenv的命令示例
  pipenv具体的使用方法为pipenv [OPTIONS] COMMAND [ARGS]...。其中,OPTIONS(操作参数)如表1-2所示。
表1-2  OPTIONS(操作参数)
  pipenv可使用的命令如表1-3所示。
表1-3  pipenv可使用的命令
  例如,进入(激活)虚拟环境,执行pipenv shell命令。虚拟环境创建好后,需要被激活才能在当前命令行中使用,可以理解为将当前命令行环境中PATH变量的值替换。此时pipenv会启动一个激活虚拟环境的子shell,然后我们会发现命令行提示符前添加了虚拟环境名,虚拟环境名为项目名。激活虚拟环境示例如图1-18所示。
图1-18  激活虚拟环境示例
  在虚拟环境下,执行exit命令即可退出虚拟环境。所以,若要在虚拟环境中执行Python脚本,有如下两种方式。
  第一种是直接执行命令pipenv run python test.py。
  第二种是先激活虚拟环境,然后再运行脚本,命令如下:
pipenv shell
python test.py
  提示
  不要使用命令pip install。虽然在虚拟环境中也会安装对应的包,但是不会更新Pipfile文件和Pipfile.lock文件,不便于后续的环境迁移。
  pipenv --rm只是把创建的虚拟环境删除了,但Pipfile文件和Pipfile.lock文件还存在。下次如果想要创建与项目名相同的虚拟环境,只要切换到原项目目录下执行命令pip install即可。
  1.4.8  部署迁移虚拟环境
  一般一个项目会创建一个目录,由于Python项目不需要编译,开发完成后,将项目目录拷贝到服务器上就可以完成部署了。但是,在项目开发过程中,我们会陆续安装和部署一些依赖工具,保证项目运行,要记住安装了哪些依赖不是件轻松的事。
  1.以前的部署流程
  使用pip提供的导出依赖工具名的功能,将环境中项目依赖的第三方工具名导出并导入requirements.txt文件。命令为pip freeze > requirements.txt。然后,上传到服务器,在服务器上依据requirements.txt文件安装工具包,命令为pip install -r requirements.txt。
  值得注意的是,pip freeze命令并不是针对特定项目的,该命令导出的是所在Python环境中的所有第三方工具。如果一个Python环境中,创建了两个不同的项目,各自有不同的依赖,那么导出的依赖会是两个项目依赖的并集,虽然这对部署来说没有问题,但安装没必要的依赖不算是好事,后续可能出现包冲突的问题。
  因此,在创建项目时,为其创建一个独立的Python虚拟环境是个好的编程习惯。
  2.现在的部署流程
  我们通过pipenv使用虚拟环境管理项目依赖,在开发环境完成开发后,如何构建生产环境呢?这时候需要使用Pipfile.lock文件。我们执行命令pipenv lock,把当前环境的模块锁定,执行命令后它会更新Pipfile.lock文件,该文件是用于生产环境的。然后,我们只需要把代码、Pipfile文件和Pipfile.lock文件放到生产环境,执行命令pipenv install,就可以创建和开发环境一样的环境了。Pipfile.lock文件记录了所有包和子包的明确版本,以完成确定的构建。如果要在另一个开发环境开发,则将代码和Pipfile文件复制过去,执行命令pipenv install --dev,将会安装包括dev对应的开发环境中的包。
  我们之所以要在开发时养成创建和使用虚拟环境的好习惯,除了避免未来工具之间的冲突,还有一个重要的原因是方便部署迁移。因为虚拟环境是独立的,仅包含项目相关的依赖,所以部署的效率更高,风险更小。
  requirements.txt文件的兼容
  pipenv可以像virtualenv一样用命令生成requirements.txt文件。
# 将Pipfile文件和Pipfile.lock文件里面的工具名导出到requirements.txt文件
pipenv lock -r  > requirements.txt
# 通过requirements.txt文件进行安装
pipenv install -r requirements.txt
  如果老项目一开始没有使用pipenv进行依赖管理,那么因为requirements.txt文件的完全兼容的特性,我们可以重新通过pipenv来管理项目依赖,只需要pipenv读取原有的最新的requirements.txt并重新生成依赖到Pipfile文件中即可。
  1.5  本章小结
  通过学习本章的内容,相信大家能够掌握Python的各个版本的安装方法、第三方工具包的管理,以及虚拟环境的创建使用,可以为后续的项目测试开发构建一个干净、纯粹的Python环境。
版权声明:51Testing软件测试网获得作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号