当前位置: 首页 > 工具软件 > PDM Python > 使用案例 >

pdm--新一代python包管理器

戈博易
2023-12-01

简介

早期的包管理器(如 Pipevn,Poetry),都是基于虚拟环境的,虚拟环境主要是为了隔离项目开发环境,但如果涉及到虚拟 环境嵌套虚拟环境,问题就难搞了,经常会出现问题。
PDM 包含如下特性:
● PEP 582 本地项目库目录,支持安装与运行命令,完全不需要虚拟环境。
● 一个简单且相对快速的依赖解析器,特别是对于大的二进制包发布。
● 兼容 PEP 517 的构建后端,用于构建发布包(源码格式与 wheel 格式)
● 拥有灵活且强大的插件系统(有插件系统直接就拉开一个档次)
● PEP 621 元数据格式
● 像 pnpm 一样的中心化安装缓存,节省磁盘空间

安装

macos安装pipx

brew install pipx
pipx ensurepath

Linux安装pipx

python3 -m pip install pipx
python3 -m pipx ensurepath

用pipx安装pdm

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

pipx install pdm
pipx list

使用

初始化

pdm init

安装包

pdm add packageName
pdm add -r requirements.txt  # 导入requirements.txt依赖

查看包

pdm list

以树状形式查看

pdm list --graph

查看包的详情

pdm show packageName

删除包

pdm remove packageName

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

pdm config

修改pypi源

pdm config pypi.url http://mirrors.aliyun.com/pypi/simple
pdm config pypi.url

运行命令

pdm run

查看环境

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

更新包

# 更新所有包
pdm update 
# 更新某个包
pdm update <pkg>

切换python版本

pdm use python3.9

命令别名

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

[tool.pdm.scripts]
dev = "python3 -m uvicorn main:app --reload --port 4000"
# 或者
dev = {cmd = "python3 -m uvicorn main:app --reload --port 4000"}
# 或者
dev = {cmd = [
    "python3",
    "-m",
    "uvicorn",
    "main:app",
    "--reload",
    # 这种方式可以添加注释
    "--port",
    "4000"
]}
环境变量
[tool.pdm.scripts]
# 全局
_.env_file = ".env"
# dev 命令
dev.env_file = ".env"

导出requirements.txt

pdm export -o requirements.txt # 方便使用其他包管理器安装依赖

config配置

# 修改home下载源并添加
pdm config pypi.url http://mirrors.aliyun.com/pypi/simple
# 修改当前虚拟环境下载源
pdm config --local pypi.url http://mirrors.aliyun.com/pypi/simple
# 修改虚拟环境location
pdm config venv.in_project false  # 在项目设置false
pdm config venv.location C:\Users\BFChainer\.pdm\envs  # 指定地址

Tips:更换http的源时,需要将将pypi.verify_ssl修改为False;
pdm config pypi.verify_ssl False # 修改config pypi.verify_ssl 为False,关闭pdm验证是否为https地址源
豆瓣:https://pypi.doubanio.com/simple
阿里云:http://mirrors.aliyun.com/pypi/simple

参考

https://developer.aliyun.com/article/992907https://zhuanlan.zhihu.com/p/468445226

 类似资料: