广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python包管理工具之PDM的使用教程
  • 800
分享到

Python包管理工具之PDM的使用教程

2024-04-02 19:04:59 800人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录前言安装使用PDM用pipx安装pdm配置 pdm 自动补全PDM初始化项目PDM 常用命令运行命令查看环境更新包切换python版本命令别名方案兼容其他方案迁移到pdmPyCh

前言

大家好,我是小姜。之前讲了一个pipenv和poetry包管理工具,想必大家也和我一样去了解过pipenv所存在问题,所以不是很推荐使用。后来改成了poetry工具,但这个东西对我来说稍微有点麻烦,经常容易打错,虽然可以做成alias的形式。那么今天我给大家推荐一个叫PDM的工具,全称:Python Development Master。它也是非常好用,有兴趣的朋友可以使用一下。

安装使用PDM

# Macos安装pipx
brew install pipx
pipx ensurepath

# linux安装pipx
python3 -m pip install pipx
python3 -m pipx ensurepath

用pipx安装pdm

PDM 只有 Python 3.7+ 的版本才能使用,使用其他的方法安装,要先保证你的 Python 版本,但使用 pipx 则不需要你去操心。一定要注意安装pipx的版本以及pipx安装pdm时使用的Python版本,否则 pdm init 会失败

pipx install pdm
pipx list

配置 pdm 自动补全

# zsh方法
mkdir $ZSH_CUSTOM/plugins/pdm
pdm completion zsh > $ZSH_CUSTOM/plugins/pdm/_pdm

vim ~/.zshrc
plugins=(
         pdm
         poetry
         git
         zsh-completions
         zsh-autosuggestions
)

source ~/.zshrc

pdm info

PDM初始化项目

执行 pdm init 就会开始初始化,初始化的时候,会让你选择项目的一些信息:

  • 是否要上传 PyPI
  • 依赖的 Python 版本
  • License 类型
  • 作者信息
  • 邮箱信息 在初始化项目时会把机器上的所有 Python 版本都扫描出来了,会让选择项目的 Python 版本。
❯ mkdir pdm-demo
❯ cd pdm-demo
# 重新执行pdm成功
❯ pdm init
Creating a pyproject.toml for PDM...
Please enter the Python interpreter to use
0. /Users/allenjol/.pyenv/versions/3.10.4/bin/python3 (3.10)
1. /Users/allenjol/.pyenv/versions/3.10.4/bin/python (3.10)
2. /Users/allenjol/.pyenv/versions/3.10.4/bin/python3.10 (3.10)
3. /Users/allenjol/.pyenv/versions/3.10.4/bin/python3.10 (3.10)
4. /Users/allenjol/.pyenv/versions/3.10.4/bin/python3 (3.10)
5. /Users/allenjol/.pyenv/versions/3.10.4/bin/python (3.10)
6. /Library/Frameworks/Python.framework/Versions/Current/bin/python3.10 (3.10)
7. /Library/Developer/CommandLineTools/usr/bin/python3 (3.8)
8. /Users/allenjol/.local/pipx/venvs/pdm/bin/python (3.10)
Please select: [0]: 8
Using Python interpreter: /Users/allenjol/.local/pipx/venvs/pdm/bin/python (3.10)
Is the project a library that will be uploaded to PyPI? [y/N]: N
License(SPDX name) [MIT]:
Author name [allen_jol]:
Author email [471733951@qq.com]:
Python requires('*' to allow any) [>=3.10]:
Changes are written to pyproject.toml.

# 完成之后,PDM 会将你的选择以 toml 格式写入 pyproject.toml 配置文件中。
❯ ll
total 8
-rw-r--r--  1 allenjol  staff  283 May 20 13:58 pyproject.toml


❯ cat pyproject.toml
[project]
name = ""
version = ""
description = ""
authors = [
    {name = "allen_jol", email = "471733951@qq.com"},
]
dependencies = []
requires-python = ">=3.10"
license = {text = "MIT"}

[tool.pdm]

[build-system]
requires = ["pdm-pep517>=0.12.0"]
build-backend = "pdm.pep517.api"

PDM 常用命令

# 安装包
pdm add requests

# 查看包
pdm list

# 以树状形式查看
pdm list --graph

# 查看包的详情
pdm show requests

# 删除包
pdm remove requests

# 项目配置(不加任何参数,可以打印出该项目的环境配置)
pdm config

# 修改pypi源
pdm config pypi.url Http://mirrors.aliyun.com/pypi/simple
pdm config pypi.url

运行命令

要在 pdm 的环境中执行命令或者项目,可以使用 run 命令,若是执行项目时,有诸多参数,可以在 pyproject.toml 配置命令别名

$ cat main.py
print('Hello, pdm')

$ pdm run python main.py
hello, pdm

查看环境

pdm info -v
pdm info --env
pdm info --packages
pdm info --where
pdm info --python

更新包

# 更新所有包
pdm update 

# 更新某个包
pdm update <pkg>

复杂的场景,pdm 也都为你考虑到了,它提供了很多选项,可以根据需要使用

  • --save-compatible:项目依赖可兼容的版本
  • --save-wildcard:保存通配符版本(暂不明白)
  • --save-exact:保存有指定确切版本的包
  • --save-minimum:保持最小版本的包
  • --update-reuse:尽量只更新命令行中指定的包,其依赖包能不更新则不更新
  • --update-eager:更新某个包顺带更新其依赖包(递归升级)
  • --prerelease:允许提前释放(暂不明白)
  • --unconstrained:忽略包版本的约束,可将包升级至最新版本
  • --top:仅更新有在 pyproject.toml 的包
  • --dry-run:试运行,而不去修改 lock 文件
  • --no-sync:只更新 lock 文件,但不更新包

如果你的依赖包有设置分组,还可以指定分组进行更新

pdm update -G security -G http

也可以指定分组更新分组里的某个包

pdm update -G security cryptography

加个 -d 就可以再指定 dev 依赖

# 更新所有的 dev 依赖
pdm update -d

# 更新 dev 依赖下某个分组的某个包
pdm update -dG test pytest

也可以指定 --prod 或者 --production 升级非 dev (即生产)的包。

切换Python版本

当你在初始化 pdm 项目时,就已经选定了当前的 Python 版本和可用的 Python 版本范围,后面如果想更改,可以使用 use 命令,但版本要受之前设定的版本范围约束。假设允许范围是 python 3.9+,当前使用的是 python 3.10,可以直接切换过去。

pdm use python3.9

命令别名

在 pyproject.toml 添加 [tool.pdm.scripts] 可以设置快捷命令别名,若项目的执行有非常多的参数,这种设定别名的方法将很有用。

$ tail -n 2 pyproject.toml
[tool.pdm.scripts]
start = 'python main.py'

$ pdm run start
Running cmd script: ['python', 'main.py']
Hello, pdm

[tool.pdm.scripts] 有两种形式

# 第一种
[tool.pdm.scripts]
start = "python main.py"

# 第二种
[tool.pdm.scripts]
start = {cmd = "python main.py"}

若想在参数中加注释,就必须得使用第二种方法,例如这样

[tool.pdm.scripts]
start = {cmd = [
    "flask",
    "run",
    # Important comment here about always using port 54321
    "-p", "54321"
]}

除了 cmd 之外,还有两个参数 一个是 shell 参数,从输出来看你应该和看出和 cmd 的区别,和 subprocess.Popen() with shell=True 差不多一个意思

$ tail -n 2 pyproject.toml
[tool.pdm.scripts]
start = {shell = "python main.py"}

$ pdm run start
Running cmd script: python main.py
Hello, pdm

一个是 env_file 参数,可以指定配置环境变量的文件

[tool.pdm.scripts]
start.cmd = "flask run -p 54321"
start.env_file = ".env"

如果想要把这个环境变量的文件不仅限于某个命令,而是 pdm run 全局,可以这样配置

[tool.pdm.scripts]
_.env_file = ".env"

方案兼容

其他方案迁移到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

pdm export -f setuppy -o setup.py

将 pdm.lock 转成 requirements.txt

pdm export -o requirements.txt

pycharm 配置支持 PDM

在命令行创建项目目录,进入项目目录执行init初始化,设置一下pypi源,然后使用pycharm打开这个目录。

mkdir pdm-demo
cd pdm-demo

pdm config pypi.url
pdm config pypi.url http://mirrors.aliyun.com/pypi/simple –-trusted-host mirrors.aliyun.com
pdm config pypi.url

# 永久设置 Linux下
❯ vi ~/.pip/pip.conf
[global]
index-url=https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com


# 使用 pdm 安装一个包:
pdm add -v requests flask

完成安装后,我们可以在当前目录下看到__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 解释器路径

❯ pdm info
PDM version:        1.15.0
Python Interpreter: /Users/allenjol/.local/pipx/venvs/pdm/bin/python (3.10)
Project Root:       /Users/allenjol/Documents/Codes/pdm-demo
Project Packages:   /Users/allenjol/Documents/Codes/pdm-demo/__pypackages__/3.10

pycharm设置 Python Interpreter 路径和pdm info 出来的一样即可。

到此这篇关于Python包管理工具之PDM的使用教程的文章就介绍到这了,更多相关Python包管理工具PDM内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python包管理工具之PDM的使用教程

本文链接: https://www.lsjlt.com/news/119745.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python包管理工具之PDM的使用教程
    目录前言安装使用PDM用pipx安装pdm配置 pdm 自动补全PDM初始化项目PDM 常用命令运行命令查看环境更新包切换Python版本命令别名方案兼容其他方案迁移到pdmpych...
    99+
    2022-11-11
  • Python学习之pip包管理工具的使用
    目录写文的原因pip 简介pip 安装/移除包升级包和查看已安装包搜索包写文的原因 学习 Python 的过程中,经常会使用 pip 命令去安装第三方模块,但细细琢磨下来,我真的掌握...
    99+
    2022-11-11
  • Python包管理工具pip怎么使用
    这篇“Python包管理工具pip怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python包管理工具pip怎么使用...
    99+
    2023-06-30
  • CentOS下编译安装python包管理安装工具pip的教程
    这篇文章主要介绍“CentOS下编译安装python包管理安装工具pip的教程”,在日常操作中,相信很多人在CentOS下编译安装python包管理安装工具pip的教程问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家...
    99+
    2023-06-13
  • vscode使用nuget包管理工具
    目录一、使用dotnet add package 命令行实现1、列出Nuget本地的路径2、使用dotnet命令安装引用Nuget包3、安装引用指版本使用-v4、使用特定源安装引用N...
    99+
    2022-11-13
  • Python包管理工具pip用法详解
    pip提供我们各色各样的软件(第三方库),而这些第三方库又可以给我们实现各种各样不同的功能,科学计算、画图、操作文件、聊天…… 我们可以通过Cmd终端、P...
    99+
    2022-11-11
  • Python包管理工具pip的15 个使用小技巧
    认识pip 众所周知,pip可以对python的第三方库进行安装、更新、卸载等操作,十分方便。 pip的全称:package installer for python,也就是Pyth...
    99+
    2022-11-12
  • Node.js包管理工具怎么使用
    这篇文章主要介绍“Node.js包管理工具怎么使用”,在日常操作中,相信很多人在Node.js包管理工具怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Node.js包管理工具怎么使用”的疑惑有所帮助!...
    99+
    2023-07-06
  • python进程管理工具怎么使用
    Python进程管理工具可以通过多种方式使用,以下是一些常见的用法示例:1. 使用`os`模块创建新的进程:```pythonimp...
    99+
    2023-10-12
    python
  • 抓包工具 之 Charles 的使用
    目录 一、下载Charles 二、绿化Charles 1. 打开绿化网址 2. 生成注册码 3. 打开Charles 三、功能说明 四、代理设置 1. proxies 2. options 3. macOS 五、安装信任证书 1. 安装证...
    99+
    2023-08-31
    服务器 运维 charies
  • Python提高运行速度工具之Pandarallel的使用教程
    目录1.准备2.使用 Pandarallel3.注意事项众所周知,由于 GIL 的存在,Python 单进程中的所有操作都是在一个CPU核上进行的,所以为了提高运行速度,我们一般会采...
    99+
    2022-11-11
  • node.js的NPM包管理工具如何使用
    这篇文章主要介绍“node.js的NPM包管理工具如何使用”,在日常操作中,相信很多人在node.js的NPM包管理工具如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2022-12-05
    node.js npm
  • k8s的包管理工具helm使用简介
    目录Helm Helm是什么?Helm中一个很重要的元素:Chart使用Helm安装helm客户端注意点通过二进制的方式安装helm客户端:添加chart存储库搜索chart存储库安...
    99+
    2022-11-13
  • Mac下python包管理工具pip的安装
    pip是常用的python包管理工具,用python的同学,都离不开pip ~~ 第一种 在系统自带的python2.7的路径下 pip是python的包管理工具,在Python2....
    99+
    2022-11-11
  • node.js包管理工具Yarn使用简介
    Yarn是由Facebook、Google、Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具 , 它主要是为了弥补 npm 的一些缺陷而出现的。和npm相比,它...
    99+
    2022-11-13
  • vscode如何使用nuget包管理工具
    这篇文章主要讲解了“vscode如何使用nuget包管理工具”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vscode如何使用nuget包管理工具”吧!一、使用dotnet add pack...
    99+
    2023-07-01
  • node.js包管理工具Yarn如何使用
    本文小编为大家详细介绍“node.js包管理工具Yarn如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“node.js包管理工具Yarn如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Yarn是由F...
    99+
    2023-07-02
  • Python依赖管理及打包工具Poetry使用规范
    目录啥是依赖规范版本约束^ 约束~ 约束* 约束比较符git 依赖路径依赖url 依赖Python 限制依赖项多个限制使用环境限制扩展依赖规范语法啥是依赖规范 可以以各种形式指定项目...
    99+
    2022-11-12
  • python调试工具Birdseye的使用教程
    目录1.快速上手2.在Pycharm中集成调试3.在VSCode中集成调试4.美中不足Birdseye是一个Python调试器,它在函数调用中记录表达式的值,并让你在函数退出后轻松查看它们,例如: 无论你如何运行或...
    99+
    2022-06-02
    python 调试工具 python Birdseye
  • Node.js中的包管理工具npm怎么使用
    本篇内容介绍了“Node.js中的包管理工具npm怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作