百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

pdm,一个超强的 Python 包管理工具

off999 2024-11-05 10:56 27 浏览 0 评论

你好,我是坚持分享干货的 EarlGrey,翻译出版过《Python编程无师自通》、《Python并行计算手册》等技术书籍。


如果我的分享对你有帮助,请关注我,一起向上进击。

你是否厌倦了使用 pip 和 virtualenv 来管理你的 Python 项目?你是否想要一个更现代、更方便的 Python 包和依赖管理工具?如果是的话,你可能会对 pdm 感兴趣。??

pdm 是一个支持最新 PEP 标准的 Python 包和依赖管理工具。它不仅仅是一个包管理器,它还可以提升你的开发工作流程的各个方面。它的最大优势是它可以像 npm 那样安装和管理包,而不需要创建虚拟环境!

我个人体验下来的感觉,确实非常丝滑!??

在这篇文章中,我将向你介绍 pdm 的主要优势、特点和用法,帮助你快速上手和使用 pdm 来管理你的 Python 项目。??

概要

这篇文章的主要结构如下:

  • 首先,我会介绍 pdm 主要优势和特点
  • 然后,我会介绍 pdm 的安装方法和基本配置。
  • 然后,我会展示如何使用 pdm 来创建、初始化和管理一个 Python 项目,包括添加、删除、更新等。
  • 最后,我会说明如何使用 pdm 来打包和发布你的 Python 项目,包括生成 wheel 文件,上传到 PyPI 等。

主要优势

通过使用 pdm,你可以享受以下几个好处:

  • pdm 使用 pyproject.toml 文件作为项目的唯一配置文件,它遵循 PEP 518 的标准,使得项目的元数据和依赖信息更加清晰和规范
  • pdm 使用 PEP 582 的机制,自动管理项目的虚拟环境,无需手动激活或切换,也无需担心虚拟环境的路径和名称,只需在项目的文件夹中运行 pdm 命令即可。
  • pdm 使用 PEP 621 的格式,记录项目的元数据,使得项目更容易被打包和发布,也更容易被其他工具识别和使用。
  • pdm 使用一个高效的依赖解析算法,可以快速地找到项目的最佳依赖组合,避免版本冲突和不兼容的问题,同时,它也可以生成一个精确的锁文件,保证项目的依赖状态的一致性和可复现性。
  • pdm 提供了一些实用的功能和选项,比如支持多种 Python 版本的管理,支持多种源的切换,支持自定义的脚本和插件,支持导入和导出其他格式的配置文件,等等。

准备工作

在开始使用 pdm 之前,你需要满足以下条件:

  • 你的系统上已经安装了 Python 3.8 或更高版本。你可以使用 python --version 命令来检查你的 Python 版本。
  • 你的系统上已经安装了 curl 工具,用于下载 pdm 的安装脚本。你可以使用 curl --version 命令来检查你的 curl 版本。

当然,其实你也可以通过 pip 或 pipx 等其他包管理工具安装 pdm。

安装和配置 pdm

pdm 提供了一个安装脚本,可以将 pdm 安装到一个隔离的环境中,类似于 pip。你可以使用以下命令来运行安装脚本:

curl -sSL https://pdm-project.org/install-pdm.py | python3 -

安装完成后,你可以使用 pdm --version 命令来检查 pdm 的版本。你也可以使用 pdm --help 命令来查看 pdm 的帮助信息。

pdm 的默认安装位置取决于你的系统:

  • 对于 Unix 系统,是 $HOME/.local/bin 目录。
  • 对于 Windows 系统,是 %APPDATA%\Python\Scripts 目录。

你可以通过设置 PDM_HOME 环境变量来修改 pdm 的安装位置。你也可以通过设置 PDM_BIN_PATH 环境变量来修改 pdm 的可执行文件的位置。

pdm 的配置文件是 ~/.pdm/config.toml,你可以在这里修改 pdm 的一些全局选项,如缓存目录、源地址、代理设置等。你也可以在每个项目的 pyproject.toml 文件中添加 [tool.pdm] 部分来修改 pdm 的一些项目级别的选项,如 Python 版本、依赖分组等。

创建和管理 Python 项目

要使用 pdm 来创建一个 Python 项目,你可以使用 pdm init 命令,它会在当前目录下生成一个 pyproject.toml 文件,用于存储项目的元数据和依赖信息。

你可以按照提示输入一些基本信息,如项目名称、版本、许可证、作者等,也可以直接使用默认值。例如:

这时,你的项目文件目录大概长这样:

要添加一个依赖到你的项目中,你可以使用 pdm add 命令,它会自动更新 pyproject.tomlpdm.lock 文件,并安装依赖到你的项目中。

你可以指定依赖的名称、版本、来源等,也可以使用 -s--section 选项来指定依赖的分组,如 devtest 等。例如:

要删除一个依赖,你可以使用 pdm remove 命令,它会自动更新 pyproject.tomlpdm.lock 文件,并卸载依赖。

你可以指定要删除的依赖的名称,也可以使用 -s--section 选项来指定要删除的依赖的分组。例如:

要运行你的项目中的代码,你可以使用 pdm run 命令,它会在你的项目的环境中执行指定的命令。

你可以指定任何有效的命令,如 pythonpytestflake8 等。例如:

打包和发布 Python 项目

要打包你的 Python 项目,你可以使用 pdm build 命令,它会根据 pyproject.toml 文件中的元数据和依赖信息,生成一个 wheel 文件和一个 sdist 文件,放在 dist 目录下。

你可以使用 -d--dest 选项来指定输出目录,也可以使用 -s--sdist-only 选项来只生成 sdist 文件。例如:

$ pdm build
? Build sdist successful
? Build wheel successful
$ ls dist
test-pdm-0.0.0-py3-none-any.whl test-pdm-0.0.0.tar.gz

要发布你的 Python 项目,你可以使用 pdm publish 命令,它会将你的项目上传到 PyPI 或其他指定的源。你需要先在 ~/.pypirc 文件中配置你的源信息,如用户名、密码、令牌等。

如果事先没有配置,pdm 会提示让你输入对应信息:

> pdm publish
Building sdist...
Built sdist at C:/Devel/pdm-demo/dist\pdm-demo-0.1.0.tar.gz
Building wheel...
Built wheel at C:/Devel/pdm-demo/dist\pdm_demo-0.1.0-py3-none-any.whl
Username:

总结

在本文中,我向你介绍了 pdm 的基本用法和优势,包括如何安装 pdm,如何使用 pdm 创建和管理 Python 项目,如何使用 pdm 安装、更新、卸载项目的依赖包。

希望你能从中学到一些有用的知识,也希望你能尝试使用 pdm 来管理你的 Python 项目,相信你会发现它是一个非常强大和方便的工具。

如果你对本文有任何的意见或建议,欢迎在评论区留言,或者直接联系我。如果你喜欢本文,也请不要吝啬你的点赞和分享,让更多的人知道 pdm 的魅力。


如果大家想进一步了解学习更多 Python 库,可以考虑关注下这个专栏哦。

- EOF -

文章已经看到这了,别忘了在右下角点个“赞”和“在看”鼓励哦~


点击标题可跳转



回复关键词「 pybook03」,领取进击的Grey与小伙伴一起翻译的《Think Python 2e》电子版
回复关键词「书单02」,领取进击的Grey整理的 10 本 Python 入门书的电子版



告诉你更多细节干货


欢迎围观我的朋友圈

??每天更新所想所悟

相关推荐

阿里云国际站ECS:阿里云ECS如何提高网站的访问速度?

TG:@yunlaoda360引言:速度即体验,速度即业务在当今数字化的世界中,网站的访问速度已成为决定用户体验、用户留存乃至业务转化率的关键因素。页面加载每延迟一秒,都可能导致用户流失和收入损失。对...

高流量大并发Linux TCP性能调优_linux 高并发网络编程

其实主要是手里面的跑openvpn服务器。因为并没有明文禁p2p(哎……想想那么多流量好像不跑点p2p也跑不完),所以造成有的时候如果有比较多人跑BT的话,会造成VPN速度急剧下降。本文所面对的情况为...

性能测试100集(12)性能指标资源使用率

在性能测试中,资源使用率是评估系统硬件效率的关键指标,主要包括以下四类:#性能测试##性能压测策略##软件测试#1.CPU使用率定义:CPU处理任务的时间占比,计算公式为1-空闲时间/总...

Linux 服务器常见的性能调优_linux高性能服务端编程

一、Linux服务器性能调优第一步——先搞懂“看什么”很多人刚接触Linux性能调优时,总想着直接改配置,其实第一步该是“看清楚问题”。就像医生看病要先听诊,调优前得先知道服务器“哪里...

Nginx性能优化实战:手把手教你提升10倍性能!

关注△mikechen△,十余年BAT架构经验倾囊相授!Nginx是大型架构而核心,下面我重点详解Nginx性能@mikechen文章来源:mikechen.cc1.worker_processe...

高并发场景下,Spring Cloud Gateway如何抗住百万QPS?

关注△mikechen△,十余年BAT架构经验倾囊相授!大家好,我是mikechen。高并发场景下网关作为流量的入口非常重要,下面我重点详解SpringCloudGateway如何抗住百万性能@m...

Kubernetes 高并发处理实战(可落地案例 + 源码)

目标场景:对外提供HTTPAPI的微服务在短时间内收到大量请求(例如每秒数千至数万RPS),要求系统可弹性扩容、限流降级、缓存减压、稳定运行并能自动恢复。总体思路(多层防护):边缘层:云LB...

高并发场景下,Nginx如何扛住千万级请求?

Nginx是大型架构的必备中间件,下面我重点详解Nginx如何实现高并发@mikechen文章来源:mikechen.cc事件驱动模型Nginx采用事件驱动模型,这是Nginx高并发性能的基石。传统...

Spring Boot+Vue全栈开发实战,中文版高清PDF资源

SpringBoot+Vue全栈开发实战,中文高清PDF资源,需要的可以私我:)SpringBoot致力于简化开发配置并为企业级开发提供一系列非业务性功能,而Vue则采用数据驱动视图的方式将程序...

Docker-基础操作_docker基础实战教程二

一、镜像1、从仓库获取镜像搜索镜像:dockersearchimage_name搜索结果过滤:是否官方:dockersearch--filter="is-offical=true...

你有空吗?跟我一起搭个服务器好不好?

来人人都是产品经理【起点学院】,BAT实战派产品总监手把手系统带你学产品、学运营。昨天闲的没事的时候,随手翻了翻写过的文章,发现一个很严重的问题。就是大多数时间我都在滔滔不绝的讲理论,却很少有涉及动手...

部署你自己的 SaaS_saas如何部署

部署你自己的VPNOpenVPN——功能齐全的开源VPN解决方案。(DigitalOcean教程)dockovpn.io—无状态OpenVPNdockerized服务器,不需要持久存储。...

Docker Compose_dockercompose安装

DockerCompose概述DockerCompose是一个用来定义和管理多容器应用的工具,通过一个docker-compose.yml文件,用YAML格式描述服务、网络、卷等内容,...

京东T7架构师推出的电子版SpringBoot,从构建小系统到架构大系统

前言:Java的各种开发框架发展了很多年,影响了一代又一代的程序员,现在无论是程序员,还是架构师,使用这些开发框架都面临着两方面的挑战。一方面是要快速开发出系统,这就要求使用的开发框架尽量简单,无论...

Kubernetes (k8s) 入门学习指南_k8s kubeproxy

Kubernetes(k8s)入门学习指南一、什么是Kubernetes?为什么需要它?Kubernetes(k8s)是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用程序。它...

取消回复欢迎 发表评论: