我是tox
的新手,但我的理解是它为每个测试环境创建了本地虚拟环境。但是,似乎每当我运行tox
时,它首先将软件包安装到系统Python安装中,然后在那里安装任何依赖项。
以下是我可以展示的最简单的例子:
我的tox.ini
只是:
[tox]
envlist = py27
[testenv]
commands = pytest
deps =
pytest
然后,未安装以下一系列命令pytest
,但在tox
运行结束时,它安装在系统python路径中:
> which pytest
which: no pytest in (/cygdrive/c/Program Files (x86....
> tox
[... lots of output ...]
___________________________________ summary ___________________________________
py27: commands succeeded
congratulations :)
然后,
> which pytest
/cygdrive/c/Python27/Scripts/pytest
此外,我看到我测试的软件包也安装在系统python目录中。
不应该tox
在本地生成虚拟环境吗?我看到有一个.tox/py27
目录被创建,但它看起来像一个Linux风格的安装,带有bin
目录而不是Scripts
。这是tox
的预期行为吗?
答案 0 :(得分:1)
似乎您在系统的PATH
环境变量上使用了Windows原生Python,甚至在Cygwin的/bin
路径之前就已经插入了它,因此tox
正在寻找并尝试运行该Python而不是Cygwin的Python。通常,除非有特殊原因,否则不应使用Cygwin的Windows Python。
在评论中,您提到已安装TortoiseHG。我不完全知道TortoiseHG在Windows上如何工作,但是由于Mercurial是用Python编写的,因此TortoiseHG必须要么带有Python解释器,要么至少使用它在Windows上找到的任何Python解释器(可能使用virtualenv),所以如果TortoiseHG有一个PATH
条目,请确保它仍在您的Cygwin {/,/usr/,/usr/local/}bin
之后。