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)已经逐渐渗透到我们生活的方方面面。在艺术创作领域,AI技术同样展现出了其独特的魅力。今天,我们就来一起探索这个神秘而引人入胜的领域,深入了解AI绘画工具的奥秘及其为艺术创作带来的革命性变革。 一、AI绘画工具的崛起 1.1 颠覆传统绘画模式 在过去,绘画是艺术家们通过手中的画笔,蘸取颜料,在画布上自由挥洒的创造性过程。然而,随着AI绘画工

用Microsoft.Extensions.Hosting 管理WPF项目.

首先引入必要的包: <ItemGroup><PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.2" /><PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" /><PackageReference Include="Serilog

eclipse运行springboot项目,找不到主类

解决办法尝试了很多种,下载sts压缩包行不通。最后解决办法如图: help--->Eclipse Marketplace--->Popular--->找到Spring Tools 3---->Installed。

Python 字符串占位

在Python中,可以使用字符串的格式化方法来实现字符串的占位。常见的方法有百分号操作符 % 以及 str.format() 方法 百分号操作符 % name = "张三"age = 20message = "我叫%s,今年%d岁。" % (name, age)print(message) # 我叫张三,今年20岁。 str.format() 方法 name = "张三"age

亮相WOT全球技术创新大会,揭秘火山引擎边缘容器技术在泛CDN场景的应用与实践

2024年6月21日-22日,51CTO“WOT全球技术创新大会2024”在北京举办。火山引擎边缘计算架构师李志明受邀参与,以“边缘容器技术在泛CDN场景的应用和实践”为主题,与多位行业资深专家,共同探讨泛CDN行业技术架构以及云原生与边缘计算的发展和展望。 火山引擎边缘计算架构师李志明表示:为更好地解决传统泛CDN类业务运行中的问题,火山引擎边缘容器团队参考行业做法,结合实践经验,打造火山

vue项目集成CanvasEditor实现Word在线编辑器

CanvasEditor实现Word在线编辑器 官网文档:https://hufe.club/canvas-editor-docs/guide/schema.html 源码地址:https://github.com/Hufe921/canvas-editor 前提声明: 由于CanvasEditor目前不支持vue、react 等框架开箱即用版,所以需要我们去Git下载源码,拿到其中两个主

React+TS前台项目实战(十七)-- 全局常用组件Dropdown封装

文章目录 前言Dropdown组件1. 功能分析2. 代码+详细注释3. 使用方式4. 效果展示 总结 前言 今天这篇主要讲全局Dropdown组件封装,可根据UI设计师要求自定义修改。 Dropdown组件 1. 功能分析 (1)通过position属性,可以控制下拉选项的位置 (2)通过传入width属性, 可以自定义下拉选项的宽度 (3)通过传入classN

android 免费短信验证功能

没有太复杂的使用的话,功能实现比较简单粗暴。 在www.mob.com网站中可以申请使用免费短信验证功能。 步骤: 1.注册登录。 2.选择“短信验证码SDK” 3.下载对应的sdk包,我这是选studio的。 4.从头像那进入后台并创建短信验证应用,获取到key跟secret 5.根据技术文档操作(initSDK方法写在setContentView上面) 6.关键:在有用到的Mo

android一键分享功能部分实现

为什么叫做部分实现呢,其实是我只实现一部分的分享。如新浪微博,那还有没去实现的是微信分享。还有一部分奇怪的问题:我QQ分享跟QQ空间的分享功能,我都没配置key那些都是原本集成就有的key也可以实现分享,谁清楚的麻烦详解下。 实现分享功能我们可以去www.mob.com这个网站集成。免费的,而且还有短信验证功能。等这分享研究完后就研究下短信验证功能。 开始实现步骤(新浪分享,以下是本人自己实现

Android我的二维码扫描功能发展史(完整)

最近在研究下二维码扫描功能,跟据从网上查阅的资料到自己勉强已实现扫描功能来一一介绍我的二维码扫描功能实现的发展历程: 首页通过网络搜索发现做android二维码扫描功能看去都是基于google的ZXing项目开发。 2、搜索怎么使用ZXing实现自己的二维码扫描:从网上下载ZXing-2.2.zip以及core-2.2-source.jar文件,分别解压两个文件。然后把.jar解压出来的整个c