python - 使用平台时指定特定于 Python 版本的 testenv 设置

标签 python tox

如何设置一个 testenv 来指定特定 Python 版本的设置?作为一个最小的例子,

[tox]
envlist = py{36,37,38,39}-{mylinux,macos,mywindows}
skipsdist = True

[testenv]
platform = mylinux: linux
           mymacos: darwin
           mywindows: win32
setenv =
    mylinux: PLATFORM = linux
    mymacos: PLATFORM = macos
    mywindows: PLATFORM = windows

commands =
    {envpython} -c "print('{env:PLATFORM}')"  # This env is used in setup.py
    # other commands

[testenv:py36]
deps =
    pydantic  # No dataclasses until py37

如果我运行tox -e py36-mylinuxpydantic将不会被安装。如果我运行tox -e py36,它会说

ERROR:   py36: unresolvable substitution(s):
    commands: 'PLATFORM'
Environment variables are missing or defined recursively.

如何为特定 Python 版本指定 testenv 设置,而不必在环境名称中指定所有其他信息(特别是当 envlist 很长时)?

最佳答案

同样的方式;将其放入 [testenv] (并删除 [testenv:py36]):

deps =
    py36: pydantic  # No dataclasses until py37

使用tox --showconfig验证配置

PS。 tox 不结合环境;一旦您拥有单独的 [testenv:py36],它将不会与 mylinux 组合。

关于python - 使用平台时指定特定于 Python 版本的 testenv 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65055585/

相关文章:

python - tox 测试,使用 setup.py extra_require 作为 tox deps 源

python - 为什么 `tox` 在 Windows 的系统 Python 目录中安装包?

python - 我应该如何在不考虑 Python 顺序的情况下查找日期和时间?

python - 从 Python 将 null 插入 Sqlite

python - Opencv 使用 python 和 flask : HIGHGUI ERROR: libv4l unable to ioctl S_FMT

docker - 延迟 Docker 容器运行,直到构建 tox 环境

python - 使用 Python 请求的异步请求

python - django可以根据字典字段过滤查询集吗?

python - 使用 TOX 运行 Flake8 测试时出现 Unicode 错误

python - Tox 总是需要 30 秒才能运行