<p>你想要的是两个不同的环境。在</p>
<p>首先要了解的是,<code>envlist</code>是一个列表,列出了如果不使用<code>-e</code>选项调用tox,将运行的所有环境。在</p>
<p>接下来你要了解的是,每个<code>tox.ini</code>只有一个列表,而这个列表在global<code>[tox]</code>部分中。在</p>
<p>另一件你必须理解的事情是pyXX factors(factors是由<code>-</code>符号分隔的环境名称的部分)对tox有特殊的含义,因为它们指示tox用一个特定的解释器构建一个环境。它们也被称为“默认环境”(参见<a href="http://tox.readthedocs.io/en/latest/example/basic.html#a-simple-tox-ini-default-environments" rel="nofollow noreferrer">basic usage</a>)。如果您在调用tox时没有要求这个因子,那么<code>basepython</code>解释器将用于构建virtualenv(您从中调用tox的解释器)。在</p>
<p>因此,如果您使用毒性试验与您的一样,它将使用basepython执行<code>[tox:local]</code>中定义的内容,因为您没有定义应该使用哪个python来创建virtualenv,因此它使用的解释器与您调用tox时使用的相同。在</p>
<p>如果您希望能够使用其他解释器(独立于其他环境)调用本地因子,那么可以从以下几点开始(在<a href="http://tox.readthedocs.io/en/latest/config-v2.html" rel="nofollow noreferrer">v2 config docs</a>中描述):</p>
<pre><code>[tox]
envlist = {py27,py35}-remote,{py31,py36}-local
[testenv]
deps =
Flask
connexion
pytest
coverage
pytest-cov
requests
six
[testenv:remote]
commands=pytest --junitxml xunit-reports/xunit-result-XXX.xml --cov {envsitepackagesdir} --cov-report=xml
[testenv:local]
commands= pytest --cov {envsitepackagesdir}/XXX --cov-report html
</code></pre>
<p>检查创建的环境:</p>
^{pr2}$
<p>使用大括号表示法的envlist所做的,是通过将所有因素与其排列组合在一起来创建环境名称(这也可以有更多的维度)。在</p>
<p>如果您不使用<code>-e</code>说出tox,它们将全部运行并使用正确的解释器。在</p>
<p>如果只想运行本地env,则必须使用以下命令调用它:</p>
<pre><code>$ tox -e py31-local,py36
</code></pre>
<p>那么只有那两个会跑。这里要做的是,如果您想运行所有环境的子集,您必须要求它们具有它们的全名。没有“子代”或额外的环境魔法。只需在逗号分隔的列表中列出环境的全名,你就是黄金。在</p>
<p><strong>更新</strong></p>
<p>TIL了解到实际上可以从命令行使用生成语法,因此可以键入:</p>
<pre><code>$ tox -e 'py{31,36}'-local
</code></pre>
<p>谢谢你指出它。在</p>