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

使用平台时,指定特定于Python版本的testenv设置,python,tox,Python,Tox,如何设置指定特定Python版本设置的testenv?作为一个简单的例子 [tox] envlist = py{36,37,38,39}-{mylinux,macos,mywindows} skipsdist = True [testenv] platform = mylinux: linux mymacos: darwin mywindows: win32 setenv = mylinux: PLATFORM = linux mym

如何设置指定特定Python版本设置的testenv?作为一个简单的例子

[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 mylinux
,则不会安装
pydantic
。如果我运行tox-epy36,它会说

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

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

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

使用
tox--showconfig验证配置


PS.
tox
不结合环境;一旦您有了一个单独的
[testenv:py36]
它将不会与
mylinux

组合使用
py36 mylinux:pydantic
是否可以组合使用?你能给我指一下推荐人吗。我只是尝试了一下,是的-它将
deps
仅限于一个环境。2.
deps =
    py36: pydantic  # No dataclasses until py37