古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。

搞定Python项目依赖:requirements.txt文件的创建和使用

Python admin 484℃ 0评论

Python的强大在于它拥有数量众多的第三方库协助开发,在编写Python项目时,我们经常会使用很多第三方模块。由于不同设备和系统的差异性,导致我们很难分散地控制项目依赖(头铁的同学请绕道),于是requirements.txt(后续文章中可能简称为requirements)就出现了。requirements.txt记录了当前环境中所使用的包和对应版本,能够配合Python的包管理工具快速地在其他系统中部署相同的环境,保证开发和部署的效率。

接下来我们介绍几种常用的生成和使用requirements.txt文件的方法:

一 pip freeze

pip 是一个Python包管理工具,主要是用于安装 PyPI 上的软件包,可以替代 easy_install 工具。

安装pip有两种方式,一种是源码安装(在Python2编译安装的时候没有安装pip,需要在官网下载安装,而Python3在安装的时候就默认安装了pip),还有一种方式是使用Linux系统的包管理软件,因为Linux系统一般都是有自带Python,如果只需要系统自带的Python,直接从系统的包管理器安装可以了。方法是“yum install python-pip”或“apt-get install python-pip”。

1. pip freeze生成requirements.txt

2. pip使用requirements安装依赖

二 pipreqs

上面介绍的pip管理依赖包的方法是最常用的做法,但是如果有使用过的同学,肯定知道这种方法也有弊端,就是pip创建项目依赖包requirements文件时会将整个环境的包都列出来(虚拟环境下不会包含pip和setuptools),往往需要我们手动删除很多当前项目不需要的依赖。

通常我们生成项目requirements.txt文件是希望得到当前项目的依赖情况,这时候推荐使用pipreqs。这个工具的优势在于它是通过对项目目录扫描自动发现依赖的类库,生产依赖清单,但是可能会存在一些偏差,需要手动调整。

pipreqs安装方法很简单,pip install pipreqs 即可。

这条命令可能会发生错误:

解决方法:修改pipreqs.py文件中75行,将encoding修改为utf-8。或者运行命令的时候指定编码格式。

其他pipreqs的详细用法可以查找文档或参见命令帮助提示,使用生成的依赖与pip一致,需要“ pip install -r requirements.txt ”。

三 pip-compile

这种方法也比较适合精细化控制,需要自行创建requirements.in文件(这工具真的是傲娇,连个文件也不给生成)。创建文件后,需要手动写入依赖包的名称,如:

然后运行命令:

此时pip-compile会根据当前环境中依赖包的版本填写配置文件,此时查看配置文件会发现生成的版本信息。

四 conda

conda 是针对于 Python 的环境和包管理工具( Conda是一个通用的包管理器,当初设计来管理任何语言的包,这么表述是因为被用来管理Python比较多),发布于2012年,在Python数据分析领域是与Numpy和Scipy一样受欢迎的工具。可以使用 minconda 或 anaconda 进行安装,前者是简化版本,只包含 conda 和其依赖。 Anaconda发行版会预装很多pydata生态圈里的软件,而Miniconda是最小的conda安装环境, 一个干净的conda环境。

conda 有 Python3.x 和 Python2.x 系列两个版本,其实都没有关系,因为你在使用 conda 进行创建环境时,可以指定 Python 的版本。一般来说 conda 仓库的软件没有 PyPI 更新快和全。所以推荐 conda 只用来创建虚拟环境(后面介绍),包的安装管理仍然使用 pip。但在 windows 下由于依赖不好处理,所以在使用 pip 失败时可以查询是否有编译好的 conda 包。

和pip相比,pip可以允许你在任何环境中安装Python包,而conda允许你在conda环境中安装任何语言包(包括c语言或者Python)。可以在virtualenv环境下安装conda,但是最好用conda自己的环境工具,这样会和pip有更好的兼容性。总结来看,pip 和 conda 是为不同目的存在的,我们应该更加关注怎么同时用好这两个工具,而不是只用一个。

conda批量导出包含环境中所有组件的requirements.txt文件:

批量安装requirements.txt文件中的组件依赖:

五 总结

转载请注明:北凉柿子 » 搞定Python项目依赖:requirements.txt文件的创建和使用

喜欢 (0)or分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址