【Python基础】一文搞懂:Python 中 “requirements.txt“ 文件生成和使用

文章目录

    • 1 引言
    • 2 什么是 `requirements.txt`?
    • 3 如何生成 `requirements.txt`?
      • 3.1 方法一:使用 pip freeze
      • 3.2 方法二:使用 pipreqs
    • 3.3 使用 pip freeze 和 pipreqs 的对比
    • 4 如何使用 `requirements.txt`?
      • 4.1 安装依赖
      • 4.2 更新依赖
    • 5 总结

1 引言

在 Python 项目开发中,requirements.txt 文件扮演着至关重要的角色,它记录了项目所需的所有依赖包及其精确版本号。这确保了代码在不同环境中都能以预期的方式运行。本文将深入探讨如何生成和使用 requirements.txt 文件,帮助您在 Python 项目管理中更加得心应手。

2 什么是 requirements.txt

requirements.txt 是一个文本文件,列出了所有必须安装的库,以便于在新环境中复制相同的设置。它通常包括库的名称和版本号,格式如下:

flask==1.1.2
requests==2.24.0

3 如何生成 requirements.txt

3.1 方法一:使用 pip freeze

最简单的生成方法是使用 pip freeze 命令。这个命令会列出当前环境中所有已安装的包及其版本号。

在命令行中运行:

pip freeze > requirements.txt

这将会创建一个包含所有依赖项的 requirements.txt 文件。

3.2 方法二:使用 pipreqs

pipreqs 是一个更智能的工具,它根据项目文件中的实际导入来生成依赖列表。

首先安装 pipreqs

pip install pipreqs

然后在项目根目录下运行:

pipreqs . --encoding=utf8

或者

pipreqs ./ --encoding utf-8

pipreqs 会在项目文件夹中创建一个 requirements.txt 文件,只包含项目实际使用的依赖。

3.3 使用 pip freeze 和 pipreqs 的对比

在生成 requirements.txt 文件时,pip freezepipreqs 是两种常用的方法,但它们在使用上有着显著的差异。以下是这两种方法的对比,帮助您根据项目需求选择最合适的工具。

pip freeze

pip freeze 生成的 requirements.txt 包含了当前环境中所有已安装的库及其版本号。这种方法的主要特点是:

  • 简单直接:只需一个命令,即可列出所有安装的包。
  • 全面性:生成的文件包括所有包,无论它们是否直接用于项目。
  • 适用场景:最适合小型项目或在虚拟环境中工作时使用。

优点

  • 快速且易于操作。
  • 确保了环境一致性,因为它列出了所有包。

缺点

  • 可能包含不必要的依赖,导致项目膨胀。
  • 如果不是在虚拟环境中运行,可能会包含全局安装的包,与项目无关。

pipreqs

pip freeze 不同,pipreqs 会分析项目文件,仅列出项目实际使用的依赖。它的特点包括:

  • 智能分析:基于项目代码分析依赖项。
  • 轻量结果:仅包含项目需要的依赖,避免不必要的包。
  • 适用场景:适合较大的项目或需要精确依赖管理的情况。

优点

  • 生成的 requirements.txt 更准确,不包含冗余依赖。
  • 减少了项目大小,提高了安装速度。

缺点

  • 分析过程可能需要更多时间。
  • 某些情况下可能无法检测到间接依赖。

小结:
选择 pip freeze 还是 pipreqs 取决于您的具体需求。对于在干净的虚拟环境中开发的小型项目,pip freeze 可能是最好的选择。而对于更大的项目,或当您需要更准确地控制依赖时,pipreqs 可能更适合。无论选择哪种方法,定期更新 requirements.txt 以反映最新的依赖状态始终是一个好习惯。

4 如何使用 requirements.txt

4.1 安装依赖

在新环境部署项目时,您可以使用 requirements.txt 文件轻松安装所有依赖项。只需运行:

pip install -r requirements.txt

4.2 更新依赖

项目开发过程中,依赖包可能会更新。您应定期更新 requirements.txt 文件,以确保使用最新的依赖版本。更新后,使用相同的安装命令应用更改。

5 总结

requirements.txt 文件是 Python 项目管理的一个关键组成部分。掌握如何生成和使用这个文件,将大大提高您在不同开发环境中工作的效率。无论是个人项目还是团队协作,正确使用 requirements.txt 都是确保项目顺利运行的有效途径。


希望这篇文章对您理解和使用 requirements.txt 有所帮助。如果您有任何问题或建议,请在评论区留言,让我们共同进步!

作者:climber1121
链接:https://blog.csdn.net/climber1121
来源:CSDN
版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明。

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

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

相关文章

[从零开发JS应用] 如何在VScode中配置Javascript环境,常见的调试方法有哪些?

一、安装VSCode和Node.js 记录环境配置:本文配置的环境主要针对单独JS文件的断点调试,主要是为了调试LeetCode里面的代码。 首先在官网下载对应的版本:https://nodejs.org/en/ 开始安装,可以自定义选择安装路径。 这里选择Add Pa…

【亲测,安卓版】快速将网页网址打包成安卓app,一键将网页打包成app,免安装纯绿色版本,快速将网页网址打包成安卓apk

背景:部分客户需求将自己网站打包成app,供用户在浏览器安装使用、 网页网址快速生成app 准备材料操作流程第一步:打开HBuilder X新建项目第二步创建Wap2App项目第三步修改App图标第四步发布app第五步查看apk 准备材料 1.需要打包的网页 2.ap…

在网页开发中,前后端如何更好地协同工作?

在网页开发中,前后端如何更好地协同工作是非常关键的,以下是一些方法和技巧可以帮助前后端更好地协同工作: 1.明确需求和规范:前后端应该共同讨论和明确项目的需求和规范,包括功能、界面、数据格式等。确保双方对项目…

页面加载不出来,报错[@umijs/runtime] load component failed

问题描述 页面加载不出来数据,一直在旋转,控制台输出内容如下: 原因分析: 之前页面是没有问题的,在写当前页面突然出现页面加载不出来,控制台报错,主要是页面引入了这行代码报错 import { …

MX Component基础使用(多点位读取,多点位写入)

步骤,先连接PLC,然后在填入对应的点位 D10 然后去读取。 using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;us…

边缘计算网关的主要功能有哪些?天拓四方

随着物联网(IoT)的快速发展和普及,边缘计算网关已经成为了数据处理和传输的重要枢纽。作为一种集成数据采集、协议转换、数据处理、数据聚合和远程控制等多种功能的设备,边缘计算网关在降低网络延迟、提高数据处理效率以及减轻云数…

民国漫画杂志《时代漫画》第13期.PDF

时代漫画13.PDF: https://url03.ctfile.com/f/1779803-1247458360-14efab?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了,截止1937年6月战争来临被迫停刊共发行了39期。 ps:资源来源网络!

数组的定义、顺序存储及特殊矩阵的存储

目录 一、数组的定义 1.1概念 1.2抽象数据类型定义 二、数组的顺序存储 2.1一维数组元素的存储位置 2.2二维数组元素的存储位置 2.3三维数组元素的存储位置 三、特殊矩阵的压缩存储 3.1相关概念 3.2对称矩阵 3.3三角矩阵 3.4对角矩阵(带状矩阵&#xff0…

【机器学习300问】102、什么是混淆矩阵?

一、混淆矩阵的定义 混淆矩阵是一种用于评估分类模型性能的评估指标。当模型对数据进行预测并将数据分配到预定义的类别时,混淆矩阵提供了一种直观的方式来总结这些预测与数据实际类别之间的对应关系。具体来说,它是一个表格。 二、分类模型性能评估一级…

私域用户画像分析

为什么做私域要分析用户画像? 1、更好地了解用户需求:通过分析用户画像,可以深入了解用户的需求、偏好、行为等特征,从而更好地满足他们的需求。 2、个性化营销:根据用户画像,可以为用户提供个性化的营销…

js setTimeout、setInterval、promise、async await执行顺序梳理

基础知识 async: 关键字用于标记一个函数为异步函数,该函数中有一个或多个promise对象,需要等待执行完成后才会继续执行。 await:关键字,用于等待一个promise对象执行完,并返回其中的值,只能在async函数内部使用。可…

云服务器平台AutoDL--基本介绍与使用感受

因为课程作业需要复现DreamBooth,找了几个教程之后,发现了AutoDL这个好东西,芜湖~ 相关概念 以下回答来自于ChatGPT。 云计算平台:云服务器平台是提供按需计算资源和服务的在线平台,通常包括存储、处理能力、数据库、…

搜维尔科技:使用Haption Virtuose 6D 力反馈通过机器人和虚拟现实完成远程操作项目

使用Haption Virtuose 6D 力反馈通过机器人和虚拟现实完成远程操作项目 搜维尔科技:使用Haption Virtuose 6D 力反馈通过机器人和虚拟现实完成远程操作项目

【Python设计模式06】代理模式

代理模式(Proxy Pattern)是一种结构型设计模式,它通过创建代理对象来控制对另一个对象的访问。代理模式可以用于延迟实例化、控制访问权限、记录日志等。代理模式的核心思想是为其他对象提供一种代理,以控制对这个对象的访问。 代…

System32文件夹千万不能删除,看完这篇你就知道为什么了

序言 C:\Windows\System32目录是Windows操作系统的关键部分,重要的系统文件存储在该目录中。网上的一些恶作剧者可能会告诉你删除它,但你不应该尝试去操作,如果你尝试的话,我们会告诉你会发生什么。 什么是System32文件夹 位于C:\Windows\System32的System32文件夹是所有…

Python深度学习:【模型系列】Transformer面试灵魂20问

1. transformer简介 Transformer模型是一种基于自注意力机制的神经网络架构,主要用于处理序列数据,如自然语言处理任务。它由Google在2017年提出,并在“Attention is All You Need”这篇论文中首次公开。Transformer模型的核心思想是利用自注意力机制来捕捉序列中的依赖关系…

MySQL 的表约束详解

在数据库设计中,约束(Constraints)是确保数据完整性和一致性的关键工具。MySQL 作为流行的关系型数据库管理系统,提供了多种约束类型来维护数据的准确性和可靠性。本文将详细探讨 MySQL 的各种表约束,包括它们的定义、…

【代码随想录】面试常考类型之动态规划01背包

前言 更详细的在大佬的代码随想录 (programmercarl.com) 本系列仅是简洁版笔记,为了之后方便观看 不同的二叉搜索树 96. 不同的二叉搜索树 - 力扣(LeetCode) 通过举例子发现重叠子问题 代码很简单,主要是思路问题&#xff0…

Windows内核函数 - 创建关闭注册表

在驱动程序的开发中,经常会用到对注册表的操作。与Win32的API不同,DDK提供另外一套对注册表操作的相关函数。首先明确一下注册表里的几个概念,避免在后面混淆。 图1 注册表概念 有5个概念需要重申一下: * 注册表项: 注…

008、字符串_内部编码

字符串类型的内部编码有3种: int:8个字节的长整型。 embstr:小于等于39个字节的字符串。 raw:大于39个字节的字符串。 Redis会根据当前值的类型和长度决定使用哪种内部编码实现。 整数类型示例如下: 127.0.0.1:6379&…