一个在多个Python版本上运行命令的PDM插件。
项目描述
PDM Multirun
一个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_VENVS
为 1
,使 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
被设置为当前解释器或虚拟环境(例如通过-i
或PDM_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...
在您有两个虚拟环境 tests38
和 tests39
的场景中,并将此脚本保存在名为 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 use
和 pdm 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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1f966279e07b715e7cb5e568aa131733140deb8bb0ee9a2c7b8f6739e6b1dc80 |
|
MD5 | e47e5ea7d849bf792d377c34c1303708 |
|
BLAKE2b-256 | 99489ef0be72e00b689c258658ef0d5287dffcd73d8980df2274ea048bd20e30 |
pdm_multirun-1.1.1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9221c6585d70c6f4244872cbe53b0f6423f4e0d758b0965ce82281f1d39264af |
|
MD5 | a9b809af9d463bfe26b2deaa6ec8b84b |
|
BLAKE2b-256 | 073ff747ad074a1552c67791ad98b50c43547de11b489a291a2bd39680657d02 |