跳转到主要内容

一个在多个Python版本上运行命令的PDM插件。

项目描述

PDM Multirun

ci documentation pypi version gitpod gitter

一个PDM插件,用于在多个Python版本上运行命令。

:warning: 寻找维护者。 我现在不使用PDM或这个插件,也没有时间修复CI失败或升级代码库以支持PDM的新版本。如果您希望成为此项目的协作者以帮助维护它,或者如果您希望将仓库转让给您,请提交一个带有足够信息的issue或讨论,以便我可以信任您 :wink

安装

使用pipx

pipx install pdm
pipx inject pdm pdm-multirun

使用PDM

pdm self add pdm-multirun

作为一个本地插件

# pyproject.toml
[tool.pdm]
plugins = [
    "pdm-multirun",
]
pdm install --plugins

用法

此插件向PDM添加了multirun命令。该命令接受与run命令相同的参数,并添加了额外的-i--interpreters--versions参数,允许指定要使用的解释器。

pdm multirun pytest tests/

要指定解释器,传递由逗号分隔的Python版本字符串

pdm multirun -i 3.10,3.11 pytest tests/

如果您使用虚拟环境,请将它们的名称传递给--interpreters选项,并添加-e--venvs标志

pdm multirun -ei 3.10,3.11 pytest tests/
pdm multirun -ei tests38,tests39 pytest tests/

您可以通过设置环境变量 PDM_MULTIRUN_USE_VENVS1,使 PDM Multirun 默认使用虚拟环境。

默认情况下,PDM Multirun 从环境变量 PDM_MULTIRUN_VERSIONS 读取 Python 版本(或 venv 名称)。它是一个由空格分隔的字符串,包含 {major}.{minor} 版本(或 venv 名称),可以被 PDM 查找和调用。

export PDM_MULTIRUN_VERSIONS="3.8 3.9 3.10 3.11 3.12"
pdm multirun pytest tests/
export PDM_MULTIRUN_VERSIONS="tests38 tests39 tests310"
pdm multirun pytest tests/

PDM Multirun 设置了一些环境变量,这些变量可以在每个版本中运行的代码中使用。

  • 当 PDM Multirun 正在使用时,PDM_MULTIRUN 被设置为 1
  • PDM_MULTIRUN_CURRENT 被设置为当前解释器或虚拟环境(例如通过 -iPDM_MULTIRUN_VERSIONS 传递的)的名称。

您可以使用这些变量,例如,输出当前 Python 版本或解释器的元数据,如下面的示例所示,如果通过 PDM Multirun 调用,则首先打印虚拟环境或解释器的名称以及正在使用的 Python 版本。

script.py

import os
import sys

MULTIRUN = os.getenv("PDM_MULTIRUN", "0") == "1"

if MULTIRUN:
    int_name = os.getenv('PDM_MULTIRUN_CURRENT', '')
    py = f"{int_name}: {sys.version_info[0]}.{sys.version_info[1]}"

    print(f"{py} - Hello from python! 👋")

# continue script as required...

在您有两个虚拟环境 tests38tests39 的场景中,并将此脚本保存在名为 example.py 的文件中时,运行以下命令

pdm multirun -e tests38,tests39 python example.py

将输出以下文本。

tests38: 3.8 - Hello from python! 👋
tests39: 3.9 - Hello from python! 👋

PDM Multirun 依次运行内部操作 pdm usepdm run。默认情况下,如果 PDM 无法“使用”解释器/venv,则继续下一个。

# will continue with 3.8 even if 3.7 is not available
pdm multirun -i 3.7,3.8 pytest tests/

您可以使用 -f--fail-fast 标志来让它失败。

# will stop at 3.7 if it's not available
pdm multirun -fi 3.7,3.8 pytest tests/

如果在 Python 版本上运行的命令失败,PDM Multirun 将停止。在任何情况下,PDM Multirun 退出前都会通过 pdm use 命令恢复保存在 .pdm-python 中的 Python 解释器。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分发

pdm_multirun-1.1.1.tar.gz (6.4 kB 查看哈希值)

上传日期

构建分发

pdm_multirun-1.1.1-py3-none-any.whl (6.9 kB 查看哈希值)

上传日期 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面