Python 3.x pythontox:如何在多个版本中使用命名的env?

Python 3.x pythontox:如何在多个版本中使用命名的env?,python-3.x,pytest,tox,Python 3.x,Pytest,Tox,我需要能够调用标记的环境(由于CICD设置不只是调用tox,而是调用tox-e tag1,tag2,…),但我希望该环境使用多个python版本。我想要这样的东西: [tox] envlist = mytag [testenv:mytag] deps= pytest coverage pytest-cov python_versions = py37, py38 // I KNOW THIS IS NOT RIGHT commands= pytest ...

我需要能够调用标记的环境(由于CICD设置不只是调用
tox
,而是调用
tox-e tag1,tag2,…
),但我希望该环境使用多个python版本。我想要这样的东西:

[tox]
envlist = mytag

[testenv:mytag]
deps=
    pytest
    coverage
    pytest-cov
python_versions = py37, py38 // I KNOW THIS IS NOT RIGHT

commands=
    pytest ...
目前我唯一知道如何做到这一点的方法是如下(调用
tox-emytag37,mytag38
,但随着新版本的添加,这种方法的伸缩性很差)

有没有更干净的方法来实现这一点?

使用:


不完全确定,也许我完全没有抓住你问题的重点,但我相信你所寻找的基本上是tox的默认工作模式,因此下面的内容应该足够了:

[testenv]
deps =
    pytest
    coverage
    pytest-cov
commands =
    pytest ...
并致电:

$ tox -e py36,py37,py38

您可以使用bash扩展生成环境,例如,
envlist={py36,py37}-mytag
将生成两个环境,
py36 mytag
py37 mytag
。如果你想为一个环境声明多个解释器,这是不可能的-每个环境都使用自己的解释器。你不使用默认的
[testenv]
部分有什么原因吗?我缺少什么吗?可以用
-e something
这样的标记调用
testenv
?除非另有说明,请阅读我帖子的第一句话。我想
某物
必须是一个冒号后面的标签,比如
testenv:something
@hoefling听起来你写的东西正好达到了我的需要?基本上,从第一块代码生成问题中的第二块代码的能力是什么?如果你把它作为一个答案,我会尝试接受!oooooo很好的解决方案,我会试试这个如果你只调用
tox
,那么
testenv
的默认行为是什么?什么python版本?你试过了吗?我相信,如果没有指定任何内容,那么tox将回到最初用于启动tox的Python解释器,它将创建一个名为
Python
的虚拟环境。
[testenv]
deps =
    pytest
    coverage
    pytest-cov
commands =
    pytest ...
$ tox -e py36,py37,py38