pipreqs:快速准确生成当前项目的requirements.txt,还有和freeze的对比

大家好,这里是程序员晚枫。

今天给大家推荐一个快速生成requirements.txt的小工具:pipreqs

什么是requirements.txt?

我们在开发Python项目的时候,需要用到requirements.txt来管理项目中使用的第三方库。

当我们把项目部署到一个没有第三方库的新环境,我们可以通过pip install -r requirements.txt来重新下载这些第三方库。

例如下面这个就是python-officerequirements.txt内容。

alive_progress==3.1.5
auto_mix_prep==0.2.0
Faker==25.2.0
moviepy==1.0.3
numpy==1.26.4
openpyxl==3.1.2
pandas==2.2.2
pdf2image==1.17.0
Pillow==10.3.0
pocode==0.0.3
poemail==0.0.3
pypandoc==1.13
PyPDF2==3.0.1
PyQt5==5.15.10
pytest==8.2.1
pywifi==1.1.12
pywin32==306
qt_material==2.14
reportlab==4.2.0
Requests==2.32.2
search4file==0.1.15
setuptools==69.0.2
tqdm==4.66.4
typer==0.12.3
wftools==0.0.9
xlrd==1.2.0
xlwt==1.3.0

如何生成requirements.txt?

常见的工具有:pipreqspip freeze 两种,它们在Python项目中用于管理依赖关系,但它们的用途和工作方式有所不同。

简单来说:

  • 生成当前项目的requirements.txt,用pipreqs
  • 生成当前环境的requirements.txt,用pip freeze

以下是它们的详细比较:

pipreqs

  • 用途pipreqs 是一个从项目代码中自动生成 requirements.txt 文件的工具。它分析项目中的Python文件,找出导入的模块,并生成一个包含这些模块及其对应版本的列表。
  • 工作方式pipreqs 通过扫描项目目录中的Python文件,识别出项目实际使用的库,然后生成一个 requirements.txt 文件,这个文件只包含项目代码中用到的库。
  • 优点
    • 只包含项目实际使用的库,避免包含不必要的依赖。
    • 可以忽略某些目录或文件,提高生成依赖列表的精确度。
    • 支持Jupyter Notebook,能够识别Notebook中的依赖。
  • 缺点
    • 需要手动运行,不会自动更新 requirements.txt 文件。
    • 可能不会识别出所有间接依赖。

pip freeze

  • 用途pip freeze 是一个列出当前环境中所有已安装的Python包及其确切版本的命令。
  • 工作方式pip freeze 会列出当前虚拟环境中安装的所有包,包括那些不是由项目直接依赖的包(例如,某些包的依赖)。
  • 优点
    • 快速列出当前环境中所有已安装的包。
    • 可以用于确保在不同环境中重现相同的环境配置。
  • 缺点
    • 包含所有环境包,可能会包含项目不需要的依赖。
    • 不能识别项目中未使用的包。

总结

  • 项目依赖管理:如果你需要一个精确的项目依赖列表,只包含项目实际使用的库,pipreqs 是更好的选择。
  • 环境复制:如果你需要复制整个Python环境,包括所有包及其版本,pip freeze 是更合适的工具。
  • 自动化与手动pipreqs 需要手动运行以生成依赖列表,而 pip freeze 只需在环境中运行即可列出所有包。

总的来说,pipreqs 更适合用于项目开发阶段,生成精确的依赖列表,而 pip freeze 更适合用于环境管理,确保环境的一致性。

大家在阅读过程中有任何问题,或者觉得有收获的话,欢迎点赞、评论和收藏。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/60064.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年入职_转行网络安全,该如何规划?

前言 前段时间,知名机构麦可思研究院发布了 《2023年中国本科生就业报告》,其中详细列出近五年的本科绿牌专业,其中,信息安全位列第一。 网络安全前景 对于网络安全的发展与就业前景,想必无需我多言,作为…

比较相邻两个元素求最大值

任务描述 本关任务:比较数组相邻两个元素求最大值。 相关知识 比较相邻的元素。如果第一个比第二个大,就交换他们两个,对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对,最后的元素应该会是最大的数。 如…

ElasticSearch备考 -- 集群配置常见问题

一、集群开启xpack安全配置后无法启动 在配置文件中增加 xpack.security.enabled: true 后无法启动,日志中提示如下 Transport SSL must be enabled if security is enabled. Please set [xpack.security.transport.ssl.enabled] to [true] or disable security b…

nVisual前端配置文件

自定义接口 描述 此配置文件作用是自定义连接后台服务器的地址。 文件位置 dist/config/api.js 字段说明 diagramApiHost:除了报表页面的所有接口host地址。 reportApiHost:报表页面接口host地址。 reportAdapterHost:报表适配器地址。 web…

力扣17-电话号码的数字组合

力扣17-电话号码的数字组合 思路代码 题目链接 思路 原题: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 输…

gatewayworker 读取laravel框架的配置

我把gatewayworker放到了vendor目录,在laravel配置文件里配置了url。 return [webSorketUrl > env(WEBSOCKET_URL, ws://127.0.0.1:8282),gatewayWebSorketUrl > env(GATEWAY_WEBSORKET_URL, Websocket://127.0.0.1:8282), ];由于在Gatewayworker/application…

vs code使用git管理代码

1.vs code连接远程服务 ①安装Remote - SSH插件。 安装好远程连接插件后,按照步骤点击远程连接、选择加号、按照指定格式输入ssh ip连接远程服务器。 2.远程推送、对比代码 ①查看你当前所在的分支号,任意点开一个文件下都有对应的分支号。 ②点开右小…

2024 网鼎杯 - 青龙组 Web WP

2024 网鼎杯 - 青龙组 WEB - 02 打开容器一个登录界面,随便输入账号密码可以进到漏洞界面 这里有一个发送给boss的功能,一眼xss 有三个接口:/flag 、/update 、/submit /flag :要求boss才能访问,/update &#xf…

验证码-滑动验证码和点选验证码

1.csdn登录 存在多个内部框架,学习使用driver.switch_to.default_content() from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.action_chains import ActionChains import timedriver webdriver.Chrom…

深度学习:BERT 详解

BERT 详解 为了全面详细地解析BERT(Bidirectional Encoder Representations from Transformers),我们将深入探讨它的技术架构、预训练任务、微调方法及其在各种自然语言处理(NLP)任务中的应用。 一、BERT的技术架构 …

停车场微信小程序的设计与实现(lw+演示+源码+运行)

摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了停车场微信小程序的开发全过程。通过分析停车场微信小程序管理的不足,创建了一个计算机管理停车场微信小程序的方案。文章介绍了停车场微信小程序的…

如何保证kafka生产者数据可靠性

ack参数的设置: 0:生产者发送过来的数据,不需要等数据落盘应答 假如发送了Hello 和 World两个信息,Leader直接挂掉,数据就会丢失 生产者 ---> Kafka集群 一放进去就跑 数据可靠性分析:丢数 1&#…

实习作假:阿里健康实习做了RABC中台,还优化了短信发送流程

最近有二本同学说:“大拿老师,能帮忙看下简历吗?” 如果是从面试官的角度来看,这个同学的实习简历是很虚假的。 但是我们一直强调的是:校招的实习简历是不能出现明显的虚假。 首先,你去公司做事情&#…

Pytorch如何精准记录函数运行时间

0. 引言 参考Pytorch官方文档对CUDA的描述,GPU的运算是异步执行的。一般来说,异步计算的效果对于调用者来说是不可见的,因为 每个设备按照排队的顺序执行操作Pytorch对于CPU和GPU的同步,GPU间的同步是自动执行的,不需…

开发指南077-平台上各种时间、包大小设置

1、axios访问后台接口超时 /utils/qlm_request.js文件中: const service axios.create({ baseURL: process.env.VUE_APP_BASE_API, // url base url request url // withCredentials: true, // send cookies when cross-domain requests timeout: 600000 // re…

路过宝安乌石岩庙记

​每周带娃从上屋地铁去罗租大道的七彩城堡儿童乐园玩,路上都会经过乌石岩庙附近。听说香火很繁盛,娃说也想去看看,于是来到了乌石岩庙。 石岩乌石岩庙 广东省深圳市宝安区老街一区94号 ​从百度知悉:乌石岩庙,又称“…

HTML CSS H5C3样式语句汇总20241105

样式语句汇总: ----------------------------------样式设置------------------------------------ 盒子: border: 1px solid #000; 设置边框粗细、实线、颜色; margin: 0 auto; 盒子居中(顺时针)上0、右自适、下0、…

量化交易系统开发-实时行情自动化交易-Okex行情交易数据

19年创业做过一年的量化交易但没有成功,作为交易系统的开发人员积累了一些经验,最近想重新研究交易系统,一边整理一边写出来一些思考供大家参考,也希望跟做量化的朋友有更多的交流和合作。 接下来聊聊基于Okex交易所API获取行情数…

MyBatis项目的创建和增删查改操作详解

MyBatis项目的创建和增删查改操作详解 MyBatis是一款优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis是基于JDBC实现的,但是比JDBC的操作更加方便,可以通过接口和XML来操作数据库。本文将详细介绍MyBatis项目的创建以及增…

OpenGL 进阶系列06 - OpenGL变换反馈(TransformFeedback)

一:概述 变换反馈(Transform Feedback)是 OpenGL 中的一项技术,允许你将顶点着色器的输出(例如变换后的顶点数据)直接传输到缓冲区,而不是将结果渲染到屏幕上。它在图形计算中非常有用,尤其在粒子系统、模拟、几何处理等场景中,可以用来获取顶点处理的中间结果,并将其…