Python 项目应该放弃requirements.txt?揭秘PDM的强大功能

2024-06-17 03:12

本文主要是介绍Python 项目应该放弃requirements.txt?揭秘PDM的强大功能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

requirements.txt的局限性

PDM 的优势

如何使用 PDM

安装 PDM

初始化项目

添加依赖

管理依赖

示例代码

初始化项目并添加依赖

编写简单的 Flask 应用

运行应用

PDM高级功能

多环境管理

脚本管理

发布包



在 Python 项目中管理依赖项,最常见的方式是使用 requirem)ents.txt 文件。但最近有一种新的包管理工具——PDM (Python Development Master),它提供了更现代化、更便捷的依赖管理方式。

requirements.txt的局限性

requirements.txt 是一个纯文本文件,它列出了所有依赖包的名称和版本。虽然简单,但它有以下几个缺点:

  • • 缺乏灵活性:无法方便地处理不同环境下的依赖。

  • • 手动管理麻烦:需要手动更新和管理依赖,容易出错。

  • • 依赖解析不够智能:难以应对复杂的依赖树。

PDM 的优势

PDM基于PEP 582规范,采用了一种称为“局部包目录”的新方法。通过在项目目录下创建__pypackages__文件夹,PDM将所有的包安装到这个文件夹中,从而实现环境隔离。这样,每个项目都有独立的依赖环境,不会相互干扰。

它的优势包括:

  • • 自动化管理:PDM 可以自动解析和管理依赖,减少手动操作。

  • • 环境隔离:每个项目都有独立的包环境,避免依赖冲突。

  • • 支持 PEP 582:无需虚拟环境,依赖安装在项目的 __pypackages__ 目录下。

如何使用 PDM

安装 PDM

首先,我们需要安装 PDM。可以使用 pip 或直接从源码安装:

pip install pdm

初始化项目

在项目目录下运行以下命令来初始化 PDM 项目:

pdm init

这将创建一个 pyproject.toml 文件,用于管理项目的元数据和依赖。

添加依赖

使用以下命令添加项目依赖:

pdm add requests

PDM 会自动将 requests 依赖添加到 pyproject.toml 文件中,并安装到项目的 __pypackages__ 目录下。

管理依赖

PDM 还提供了一些方便的命令来管理依赖:

  • • 更新依赖pdm update

  • • 移除依赖pdm remove package_name

  • • 列出依赖pdm list

示例代码

我们来看看一个实际的示例代码,展示如何使用 PDM 管理依赖:

初始化项目并添加依赖

pdm init
pdm add flask

编写简单的 Flask 应用

创建一个名为 app.py 的文件,写入以下代码:

from flask import Flaskapp = Flask(__name__)@app.route('/')
def hello():return "Hello, PDM!"if __name__ == '__main__':app.run(debug=True)

运行应用

使用以下命令运行应用:

pdm run python app.py

打开浏览器,访问 http://127.0.0.1:5000,你将看到 "Hello, PDM!" 的欢迎页面。

PDM高级功能

多环境管理

PDM支持多环境管理,例如开发环境和生产环境:

pdm add requests --dev
pdm add gunicorn --prod

脚本管理

你可以在pyproject.toml中定义常用脚本:

[tool.pdm.scripts]
start = "python app.py"

然后使用命令运行:

pdm run start

发布包

PDM还支持包发布,你可以轻松将你的项目发布到PyPI:

pdm publish

requirements.txt只提供了静态依赖管理,这意味着你需要手动更新每个依赖包的版本。而PDM则引入了动态依赖管理,它可以根据项目需求自动调整依赖版本。

PDM 作为一种现代化的依赖管理工具,提供了更灵活、更便捷的依赖管理方式。通过 PDM,你可以摆脱 requirements.txt 的束缚,更高效地管理 Python 项目依赖。

作者推荐
用Python比较对象==与is,你还在用==?out啦,来看这个!-CSDN博客
httpcore,一个小巧灵活的 python 库-CSDN博客
Python pickle,网络数据传输就得这么玩-CSDN博客

 

这篇关于Python 项目应该放弃requirements.txt?揭秘PDM的强大功能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1068333

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

揭秘世界上那些同时横跨两大洲的国家

我们在《世界人口过亿的一级行政区分布》盘点全球是那些人口过亿的一级行政区。 现在我们介绍五个横跨两州的国家,并整理七大洲和这些国家的KML矢量数据分析分享给大家,如果你需要这些数据,请在文末查看领取方式。 世界上横跨两大洲的国家 地球被分为七个大洲分别是亚洲、欧洲、北美洲、南美洲、非洲、大洋洲和南极洲。 七大洲示意图 其中,南极洲是无人居住的大陆,而其他六个大洲则孕育了众多国家和

三国地理揭秘:为何北伐之路如此艰难,为何诸葛亮无法攻克陇右小城?

俗话说:天时不如地利,不是随便说说,诸葛亮六出祁山,连关中陇右的几座小城都攻不下来,行军山高路险,无法携带和建造攻城器械,是最难的,所以在汉中,无论从哪一方进攻,防守方都是一夫当关,万夫莫开;再加上千里运粮,根本不需要打,司马懿只需要坚守城池拼消耗就能不战而屈人之兵。 另一边,洛阳的虎牢关,一旦突破,洛阳就无险可守,这样的进军路线,才是顺势而为的用兵之道。 读历史的时候我们常常看到某一方势

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

购买磨轮平衡机时应该注意什么问题和技巧

在购买磨轮平衡机时,您应该注意以下几个关键点: 平衡精度 平衡精度是衡量平衡机性能的核心指标,直接影响到不平衡量的检测与校准的准确性,从而决定磨轮的振动和噪声水平。高精度的平衡机能显著减少振动和噪声,提高磨削加工的精度。 转速范围 宽广的转速范围意味着平衡机能够处理更多种类的磨轮,适应不同的工作条件和规格要求。 振动监测能力 振动监测能力是评估平衡机性能的重要因素。通过传感器实时监