在 Python 中提取需求文本的最简单方法

在 python 中提取需求文本的最简单方法

简介:

作为 python 开发人员,管理项目依赖项是一项经常被忽视的例行任务,直到它没有被注意到。 pip freeze >requirements.txt 的简单性可能很有吸引力,但在更复杂的项目中,它可能会导致意想不到的问题,从而扰乱工作流程。在遇到几个障碍后,我发现了一种更可靠、更完善的依赖关系管理方法,我想与大家分享。

点冻结的问题:

命令 pip freeze >requirements.txt 已成为许多开发人员的标准做法。虽然它在大多数情况下都有效,但它有一些明显的缺点:

立即学习“Python免费学习笔记(深入)”;

包含不必要的软件包: pip freeze 捕获所有已安装的软件包,包括作为其他软件包的依赖项自动安装的软件包。这会导致requirements.txt臃肿,其中可能包含您的项目不直接依赖的包。

版本冲突:包含自动安装的依赖项有时会引入版本冲突,特别是当这些依赖项对于您的项目不是必需的但其他包需要时。

环境特定问题: pip freeze 反映了环境的当前状态,其中可能包括为特定本地需求安装的软件包,从而导致在另一台计算机上复制环境时出现问题。

遇到障碍:

在尝试复制我的项目环境时,我直接遇到了这些问题。我使用 pip freeze 生成了requirements.txt,但是当我尝试在新的虚拟环境中安装这些依赖项时,遇到了以下错误:

error: could not find a version that satisfies the requirement cloud-init==23.1.2 (from -r requirements.txt (line 13)) (from versions: none)error: no matching distribution found for cloud-init==23.1.2 (from -r requirements.txt (line 13))

这个错误令人沮丧,因为 cloud-init 是一个我从未直接安装过的软件包。它被作为依赖项引入,但 pip freeze 捕获了它,就好像它是我项目的一等公民一样。

寻找解决方案:

为了解决这些问题,我转向使用 pipreqs 和 pip-tools 的更精细的方法。以下是解决我的依赖管理问题的分步过程:

1. 安装必要的工具

首先,我安装了 pipreqs 和 pip-tools,它们提供了更精细的依赖管理方法:

pip install pipreqs pip-tools

2.使用pipreqs生成requirements.in

我没有使用 pip freeze,而是使用 pipreqs 生成了一个requirements.in 文件,该文件仅包含我的项目中直接使用的包。这可以防止包含不必要的依赖项:

pipreqs ./ --savepath requirements.in --force --ignore ./venv/,./test_venv/ --mode no-pin

以下是每个标志的作用:

–savepathrequirements.in: 指定输出文件。–force:强制覆盖任何现有文件。–ignore ./venv/,./test_venv/: 忽略虚拟环境目录,防止扫描不相关的文件。–mode no-pin:防止版本固定,从而提供更大的灵活性。

3.编译requirements.txt文件

接下来,我使用 pip-tools 中的 pip-compile 生成最终的requirements.txt:

pip-compile

此步骤确保仅包含必要版本的软件包,从而提供干净且无冲突的requirements.txt。

4. 安装依赖项

最后,我安装了新生成的requirements.txt中的依赖项:

pip install -r requirements.txt

这种方法产生了更精简且更易于管理的requirements.txt 文件,消除了不必要的包和版本冲突。

结论:

使用 pipreqs 和 pip-tools 从 pip freeze 切换到更强大的依赖关系管理流程,改变了我的工作流程。它不仅解决了眼前的问题,还让我更好地控制了项目的依赖关系。

如果您一直依赖 pip freeze 并面临类似的挑战,我强烈建议您尝试这种方法。这是一个小小的转变,可以对 python 项目的稳定性和可移植性产生很大的影响。

以上就是在 Python 中提取需求文本的最简单方法的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1349731.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月13日 13:04:23
下一篇 2025年12月12日 12:27:01

相关推荐

  • Python项目:电影推荐系统

    使用 python 和 tkinter 构建电影推荐机 简介 难以决定接下来要看哪部电影?电影推荐机可以为您提供帮助!这个基于 Python 的 GUI 应用程序根据类型推荐电影,允许您搜索特定电影,并提供演员和工作人员信息。它还包括明/暗模式和全屏模式,以提供更好的用户体验。 特点 建议电影:根据…

    2025年12月13日 好文分享
    000
  • 利用 Django 和 PostgreSQL 实现高效的地理定位评级 API

    上周,我有机会深入研究涉及开发基于 HTTP 的 REST API 的案例研究。该API的核心功能是计算指定地理位置之间的平均评分。这些位置涵盖区域、这些区域内的港口,API 有助于检索各种组合的评级:港口到港口、区域到区域、港口到区域和区域到港口。 对于后端,我选择了一个强大的技术堆栈:Djang…

    2025年12月13日
    000
  • 在人工智能中创建多代理系统

    多代理系统 (mas) 正在改变企业解决人工智能中复杂问题的方式。随着技术的发展,公司寻求更复杂的解决方案来管理分散的、动态的和协作的环境。本指南是为您量身定制的,提供有关构建 mas、其应用程序以及它们与检索增强生成 (rag) 模型的区别的见解。 什么是多代理系统 (MAS)? 多智能体系统(M…

    2025年12月13日 好文分享
    000
  • python编程中的字符串

    编程中的字符串a=“你好”b=”阿维纳什”打印(a,b)a=”我的名字是阿维纳什”打印(一)a=”””我叫Avinash.我来keeramangalam,str(年龄(19)”””…

    2025年12月13日
    000
  • 快速 HTML – ** 服务器错误 NotFoundError:需要 k**

    快速 html – 500 服务器错误 notfounderror:需要 2 个 pk 如果有人在使用快速 html 时遇到此问题,他们试图从具有多个主键的表中获取行并获得需要 2 pk 或需要两个主键的一些变化 问题 500 服务器错误 notfounderror:需要 2 个 pk …

    2025年12月13日
    000
  • 保护数字资产的基本策略的顶级网络安全实践

    2024 年顶级网络安全实践:保护数字资产的基本策略 在当今的数字环境中,网络安全比以往任何时候都更加重要。随着我们迈入 2024 年,保持领先地位并确保数字资产的保护是首要任务。本文探讨了 2024 年的最佳网络安全实践,提供了保护您的数字资产的基本策略。无论您是经验丰富的 it 专业人士还是好奇…

    2025年12月13日
    000
  • 高级后端开发人员(FastAPI、SQLAlchemy、异步)- 远程

    公司概况:truey 是一家充满活力的初创公司,开发利用人工智能力量的创新生产力工具。我们的使命是改变人们工作和生活的方式。 角色概述:我们正在寻找一名高级后端开发人员加入我们的团队,帮助我们使用 fastapi 和 python 的异步功能构建可扩展的高性能 api。 职责: • design, …

    2025年12月13日
    000
  • 光标分页示例

    嗨,我想分享一个游标分页模式(或游标分页模式)的示例,因为当我搜索一个时,我只能找到向前移动但不能向后移动的情况的示例,也无法找到如何处理开始和结束的数据。 您可以在此处查看此内容的存储库,但我将尝试在这里解释所有内容。 我使用 python poetry 作为包管理工具,因此对于这个示例,我假设您…

    2025年12月13日
    000
  • 电影中的黑客行为就像……

    曾经看过一部电影,主角敲击键盘,突然间,他们就进入了五角大楼超级安全的服务器机房?或者您可能见过黑客仅通过输入一些看起来很酷的代码就闯入了高安全性的金库?让我带您一睹好莱坞幕后的风采::-) :-) 现在,在你太兴奋之前,让我澄清一下:这段代码不会让你成为下一个网络天才或渗透任何政府机构。它的作用是…

    2025年12月13日
    000
  • 网站时间数据集

    您好,我在kaggle上发现了一个网站使用时间的数据集,所以我想找到访问页面数与网站总时间之间的比率。 您可以在我的github中找到数据集和代码:https://github.com/victordalet/kaggle_analysis/tree/feat/website_traffic 一、安…

    2025年12月13日
    000
  • SOLID 原则 – 使用 Python 中的真实示例进行解释

    坚实的原则(图片来源:freecodecamp) solid 是一个缩写词,代表五项设计原则,可帮助开发人员创建更易于维护、更易于理解和更灵活的软件。让我们用一个相关的例子来逐一介绍。 1. s – 单一责任原则 (srp) 定义:一个类应该只有一个改变的理由,这意味着它应该只有一项工作…

    2025年12月13日
    000
  • Python 笔记/技巧/课程/细微差别

    我发表了一篇 c++++ 技巧文章,我想写更多我知道的技巧,因为它们中的大多数都是用 python 和 js 编写的,尽管我已经用 c++ 编写了很多代码,但无论如何它们都在这里,我将从基本python语法的琐碎事情开始,但有一些初学者不知道的事情,我用星号标记了⭐️: 1. 列表 项目数据结构的有…

    2025年12月13日
    000
  • 如何使用 Crontab 在 Mac 上安排 Python 脚本

    介绍 如果您是 mac 用户并且曾经想要在特定时间自动运行 python 脚本,macos 有一个名为 crontab 的内置工具,可让您安排任务以指定的时间间隔运行。本文将指导您完成设置和使用 crontab 来安排 python 脚本的步骤。 第 1 步:编辑 crontab 文件 要编辑 cr…

    2025年12月13日
    000
  • mac json格式化工具

    使用 macOS 格式化 JSON 的方法包括:在线工具:JSONFormatter.org、JSONLint.com桌面工具:Visual Studio Code、Sublime Text(需安装插件)、BBEdit命令行工具:jq、python-json-formatter macOS 上 JS…

    2025年12月13日
    000
  • JSON格式转换的代码

    JSON 格式转换涉及将数据从一种格式转换为另一种格式。可以使用编程语言和库来完成此操作。具体步骤如下:1. Python:使用 json 模块加载和转换 JSON;2. JavaScript:使用 JSON.parse() 和 JSON.stringify() 方法;3. Java:使用 JSON…

    2025年12月13日
    000
  • 在线json数据生成

    在线生成 JSON 数据的方法有三种:在线工具:使用 JSON Editor Online 等工具轻松生成数据结构。编写脚本:使用 Python 的 json 模块或 JavaScript 的 JSON.stringify() 生成更复杂的数据。使用 JSON 库:使用 Newtonsoft.Js …

    2025年12月13日
    000
  • json代码怎么查看

    有五种查看 JSON 代码的方法:1. 文本编辑器;2. 浏览器;3. 在线 JSON 查看器;4. 命令行;5. Python。 如何查看 JSON 代码 JSON(JavaScript 对象表示法)是一种用于传输和存储数据的轻量级数据格式。查看 JSON 代码有几种方法: 1. 文本编辑器 打开…

    2025年12月13日
    000
  • 幸运的一类

    每周挑战 284 穆罕默德·s·安瓦尔 (mohammad s. anwar) 每周都会发出“每周挑战”,让我们所有人都有机会为每周两次的任务提出解决方案。我的解决方案首先用python编写,然后转换为perl。这对我们所有人来说都是练习编码的好方法。 挑战,我的解决方案 任务1:幸运整数 任务 给…

    2025年12月13日
    000
  • Docker Python Django 初始配置设置

    docker 工作流程 1. 确保您的 dockerfile 正确 确保您的 dockerfile 已准备好并位于项目的根目录中。根据前面的讨论,您的 dockerfile 可能如下所示: from python:3.11env pythondontwritebytecode=1env python…

    2025年12月13日
    000
  • 《数据科学终极指南》

    介绍 数据科学最终在我们这个技术驱动的世界中发挥着举足轻重的作用。这一切都是为了利用数学、计算机编程和特定主题的数据的混合,从庞大的数据集中找到有价值的数据。本课程将为您提供清晰的数据科学图表,计算您所需的主要想法、工作替代方案和关键能力。 什么是数据科学? 数据科学是一个结合多种方法从数据中获取有…

    2025年12月13日
    000

发表回复

登录后才能评论
关注微信