That being said it would be possible to add a smarter check against python version missmatch that would still allow this kind of path hardcoding.

On Fri, Jul 13, 2018, 15:21 Fred Drake <> wrote:
On Fri, Jul 13, 2018 at 5:55 AM Oliver Bestwalter <> wrote:
> this is a fix introduced new in 3.1 to make sure that the wrong interpreter isn't used silently when tox is misconfigured. I wasn't involved in the fix and lack the details, but your config looks like there should be no such warning.

With the attached tox.ini and Python interpreters at the indicated
locations, I see four warnings, but the configured interpreters are

    py35 recreate: /home/fdrake/p/kt.testing/.tox/py35
/home/fdrake/tools/tox/bin/python3 -m virtualenv --python
/opt/kt-python35/bin/python3 py35

Uncommenting the "ignore_basepython_conflict = true" setting, the
configured locations of the interpreters is ignored, and no warnings
are displayed:

    py35 recreate: /home/fdrake/p/kt.testing/.tox/py35
/home/fdrake/tools/tox/bin/python3 -m virtualenv --python
/usr/bin/python3.5 py35

> When you say that py36 and py37 weren't found at all: do you mean that the warning shadows an actual error? If this is the case, it would be great if you could open an issue with a quick explanation how to reproduce this.

With "ignore_basepython_conflict = true" uncommented, tox ignores the
basepython settings and tells me the interpreters are not found.
Since I've used "skip_missing_interpreters = true", it skips without
an error:

    py36 recreate: /home/fdrake/p/kt.testing/.tox/py36
    SKIPPED: InterpreterNotFound: python3.6
    py37 recreate: /home/fdrake/p/kt.testing/.tox/py37
    SKIPPED: InterpreterNotFound: python3.7

Using "ignore_basepython_conflict = true" and
"skip_missing_interpreters = false", the system 2.7 and 3.5 are used,
and 3.6 and 3.7 are reported missing as errors:

    py36 recreate: /home/fdrake/p/kt.testing/.tox/py36
    ERROR: InterpreterNotFound: python3.6
    py37 recreate: /home/fdrake/p/kt.testing/.tox/py37
    ERROR: InterpreterNotFound: python3.7

So I think there are a couple of surprising behaviors here.

1. A warning about a conflict is being generated when the Python I've
specified actually matches the version I've indicated I want (by
factor).  The interpreter isn't from a system package (provided by the
OS distribution, Ubuntu in my case), but for each of my configured
interpreters, the version matches.

2. When the configuration indicates the warning should be suppressed,
the configuration of the basepython setting is ignored.  This strikes
me as counter-intuitive.  Warning of suspicious configuration is
arguably a good idea, but ignoring configuration is never the right
thing to do.  If the user agrees with the warning, they'll change the
configuration and have another go at it.

It remains unclear to be whether the "default factors" are intended to
refer to specific versions of Python, or to specific installations.
Searching for defaults based on the PATH is reasonable, but many
software engineers will also argue that building apps on top of them
is insane.  When testing a library with tox, I want to use the same
Python's I'll consider for my applications.


Fred L. Drake, Jr.    <fred at>
"A storm broke loose in my mind."  --Albert Einstein
tox-dev mailing list --
To unsubscribe send an email to