Python包管理工具之PDM的使用教程
今天主要是给大家推荐一个叫PDM的工具,全称:Python Development Master,它也是非常好用。本文将为大家详细讲讲它的使用,感兴趣的可以了解一下
−
目录
前言
大家好,我是小姜。之前讲了一个pipenv和poetry包管理工具,想必大家也和我一样去了解过pipenv所存在问题,所以不是很推荐使用。后来改成了poetry工具,但这个东西对我来说稍微有点麻烦,经常容易打错,虽然可以做成alias的形式。那么今天我给大家推荐一个叫PDM的工具,全称:Python Development Master。它也是非常好用,有兴趣的朋友可以使用一下。
安装使用PDM
1 2 3 4 5 6 7 |
|
用pipx安装pdm
PDM 只有 Python 3.7+ 的版本才能使用,使用其他的方法安装,要先保证你的 Python 版本,但使用 pipx 则不需要你去操心。一定要注意安装pipx的版本以及pipx安装pdm时使用的Python版本,否则 pdm init 会失败
1 2 |
|
配置 pdm 自动补全
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
PDM初始化项目
执行 pdm init 就会开始初始化,初始化的时候,会让你选择项目的一些信息:
- 是否要上传 PyPI
- 依赖的 Python 版本
- License 类型
- 作者信息
- 邮箱信息 在初始化项目时会把机器上的所有 Python 版本都扫描出来了,会让选择项目的 Python 版本。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
|
PDM 常用命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
运行命令
要在 pdm 的环境中执行命令或者项目,可以使用 run 命令,若是执行项目时,有诸多参数,可以在 pyproject.toml 配置命令别名
1 2 3 4 5 |
|
查看环境
1 2 3 4 5 |
|
更新包
1 2 3 4 5 |
|
复杂的场景,pdm 也都为你考虑到了,它提供了很多选项,可以根据需要使用
- --save-compatible:项目依赖可兼容的版本
- --save-wildcard:保存通配符版本(暂不明白)
- --save-exact:保存有指定确切版本的包
- --save-minimum:保持最小版本的包
- --update-reuse:尽量只更新命令行中指定的包,其依赖包能不更新则不更新
- --update-eager:更新某个包顺带更新其依赖包(递归升级)
- --prerelease:允许提前释放(暂不明白)
- --unconstrained:忽略包版本的约束,可将包升级至最新版本
- --top:仅更新有在 pyproject.toml 的包
- --dry-run:试运行,而不去修改 lock 文件
- --no-sync:只更新 lock 文件,但不更新包
如果你的依赖包有设置分组,还可以指定分组进行更新
1 |
|
也可以指定分组更新分组里的某个包
1 |
|
加个 -d 就可以再指定 dev 依赖
1 2 3 4 5 |
|
也可以指定 --prod 或者 --production 升级非 dev (即生产)的包。
切换Python版本
当你在初始化 pdm 项目时,就已经选定了当前的 Python 版本和可用的 Python 版本范围,后面如果想更改,可以使用 use 命令,但版本要受之前设定的版本范围约束。假设允许范围是 python 3.9+,当前使用的是 python 3.10,可以直接切换过去。
1 |
|
命令别名
在 pyproject.toml 添加 [tool.pdm.scripts] 可以设置快捷命令别名,若项目的执行有非常多的参数,这种设定别名的方法将很有用。
1 2 3 4 5 6 7 |
|
[tool.pdm.scripts] 有两种形式
1 2 3 4 5 6 7 |
|
若想在参数中加注释,就必须得使用第二种方法,例如这样
1 2 3 4 5 6 7 |
|
除了 cmd 之外,还有两个参数 一个是 shell 参数,从输出来看你应该和看出和 cmd 的区别,和 subprocess.Popen() with shell=True 差不多一个意思
1 2 3 4 5 6 7 |
|
一个是 env_file 参数,可以指定配置环境变量的文件
1 2 3 |
|
如果想要把这个环境变量的文件不仅限于某个命令,而是 pdm run 全局,可以这样配置
1 2 |
|
方案兼容
其他方案迁移到pdm
pdm 足够好用,也足够开放,如果你当前使用的是其他的包管理器,比如 pipenv ,poetry,或者还在用最原始的 requirements.txt ,你也可以很方便的迁移到 pdm 中来:
使用 pdm import -f 无需初始化,直接转换
执行 pdm init 或者 pdm install 的时候,会自动识别你当前的依赖情况并转换 pdm迁移到其他方案 也可以当 pdm 管理的项目,导出为其他方案 pyproject.toml 和 pdm.lock是 pdm 的两个核心文件。pdm 做为一个后起之秀,也没有忘本,它支持:
将 pyproject.toml 转成 setup.py
1 |
|
将 pdm.lock 转成 requirements.txt
1 |
|
pycharm 配置支持 PDM
在命令行创建项目目录,进入项目目录执行init初始化,设置一下pypi源,然后使用pycharm打开这个目录。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
完成安装后,我们可以在当前目录下看到__pypackages_目录,我们前面所安装的库就隔离安装在其下面,类似node的node_modules目录。这样就实现了项目级别的环境隔离效果,且无需创建额外的虚拟环境,要在IDE中使用pdm项目下的本地隔离库执行程序很简单,以pycharm为例,将pdm项目打开为pycharm工程之后,找到如图所示位置的lib文件夹,将其标记为Sources Root即可,同时记得将解释器选为pdm init初始化时所在环境相对应的。
用pycharm打开pdm-demo项目,找到如图所示位置的lib文件夹,将其标记为Sources Root即可,同时记得将解释器选为pdm init初始化时所在环境相对应的Python解释器。
pycharm设置Python解释器为pdm init初始化时所在环境相对应的Python解释器:先查看 pdm info 信息,可以看到 Python Interpreter 解释器路径
1 2 3 4 5 |
|
pycharm设置 Python Interpreter 路径和pdm info 出来的一样即可。
到此这篇关于Python包管理工具之PDM的使用教程的文章就介绍到这了,更多相关Python包管理工具PDM内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!