Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用tox在windows上设置多个python安装_Python_Virtualenv_Tox - Fatal编程技术网

使用tox在windows上设置多个python安装

使用tox在windows上设置多个python安装,python,virtualenv,tox,Python,Virtualenv,Tox,我试图在windows上设置对多个python安装运行测试。我已经在名为C:\python\PythonXX_-YY的文件夹中安装了每个python,XX是python版本(例如27),而YY是32或64。目前,我路径中唯一的python是C:\python\Python33\u 64,因为我使用新的python启动器运行我想要的任何版本。我也在运行这个版本的tox 第一个问题是tox没有检测到这些安装,大概是因为它们不在默认位置。我可以通过在tox.ini中为每个环境设置路径来解决这个问题,但

我试图在windows上设置对多个python安装运行测试。我已经在名为
C:\python\PythonXX_-YY
的文件夹中安装了每个python,
XX
是python版本(例如27),而
YY
是32或64。目前,我路径中唯一的python是
C:\python\Python33\u 64
,因为我使用新的python启动器运行我想要的任何版本。我也在运行这个版本的tox

第一个问题是tox没有检测到这些安装,大概是因为它们不在默认位置。我可以通过在tox.ini中为每个环境设置路径来解决这个问题,但是它使设置非常特定于我的计算机。有没有更好的方法让tox知道我的蟒蛇在全球的位置

第二个问题是,在tox.ini中设置python位置时,在运行它时(对于Python27),会出现以下错误:

回溯(最近一次呼叫最后一次):
文件“c:\Python\Python33\u 64\lib\site packages\virtualenv.py”,第2557行,在
main()
文件“c:\Python\Python33\u 64\lib\site-packages\virtualenv.py”,第961行,主目录
从不下载=选项。从不下载)
文件“c:\Python\Python33\u 64\lib\site packages\virtualenv.py”,第1062行,位于create\u环境中
站点\包=站点\包,清除=清除)
文件“c:\Python\Python33\u 64\lib\site packages\virtualenv.py”,第1255行,在install\u Python中
复制所需的模块(主目录)
文件“c:\Python\Python33\u 64\lib\site packages\virtualenv.py”,第1193行,在需要复制的模块中
dst_文件名=更改_前缀(文件名,dst_前缀)
文件“c:\Python\Python33\u 64\lib\site packages\virtualenv.py”,第1164行,更改前缀
(文件名、前缀)
断言错误:文件名c:\Python\Python33\u 64\lib\site packages\readline.py不以以下任何前缀开头:['c:\\Python\\python27\u 64']
错误:调用错误:c:\python\python27\u 64\python.exe c:\python\Python33\u 64\lib\site packages\virtualenv.py--分发py27(请参阅c:\Users\david.townshend\Documents\Global\Programming\norman\.tox\py27\log\py27-0.log)
看起来它试图从Python3.3安装Python2.7,但我以前从未真正使用过virtualenv,所以我可能误解了这个错误


我不确定这个问题的解决方案是什么,但在我看来,显而易见的解决方案应该是tox使用python启动器来获得它所需要的python版本。有什么办法可以做到这一点吗?

看起来tox在这样的地方寻找蟒蛇:

m = re.match(r"python(\d)\.(\d)", name)
if m:
    # The standard names are in predictable places.
    actual = r"c:\python%s%s\python.exe" % m.groups()

因此,您应该将python放在c:\Python3.3\等位置。请注意点
,而不是下划线
。虽然这很痛苦。

我不确定当OP第一次问这个问题时Tox是否这样做了,但现在似乎可以按如下方式单独设置每个环境:

[tox]
envlist = pyw35,pyw36
skip_missing_interpreters=True

[testenv]
commands = {envpython} setup.py test

[testenv:pyw35]
basepython = C:/Python/64bit/351/python.exe

[testenv:pyw36]
basepython = C:/Python/64bit/362/python.exe
提供了一个变体,但我个人无法让它工作

[testenv]
commands = {envpython} setup.py test
basepython=
   pyw35: C:/Python/64bit/351/python.exe
   pyw36: C:/Python/64bit/362/python.exe

您使用的是哪个virtualenv版本?如果不是最新版本,你能试试吗?@hpk42我刚刚更新到最新版本,但没有什么区别。提出了一个问题:它还可以与
c:\python(\d)(\d)
——不带逗号。tho不支持32位和64位并排
[testenv]
commands = {envpython} setup.py test
basepython=
   pyw35: C:/Python/64bit/351/python.exe
   pyw36: C:/Python/64bit/362/python.exe