了解tox.ini中的非默认Python配置

时间:2017-09-23 20:40:14

标签: python tox

我正在尝试详细了解配置tox.ini文件的详细信息。在one of the files for the Jupyter projectthis demo project中,他们不是使用默认的python环境,而是在命令中定义新环境:

[testenv]
basepython =
    py27: {env:TOXPYTHON:python2.7}
    py33: {env:TOXPYTHON:python3.3}

这有什么好处?另外,使用env:TOXPYTHON命令完成的命令是什么?我在tox文档中找不到它。

2 个答案:

答案 0 :(得分:0)

这里要理解的主要概念是:

  1. Generating environments, conditional settings
  2. 如果运行的环境包含冒号前面列出的因素之一,那么这是有效的。

    1. Environment variable substitutions with default values
    2. 花括号中的元素会被替换,具体取决于运行shell tox中设置的环境变量的状态。

      将您的代码段的含义放在一起是:

      py27: {env:TOXPYTHON:python2.7}
      

      如果因子py27是tox环境名称的一部分(例如" py27-unittests"),则使用环境变量TOXPYTHON或文字" python2作为basepython的值0.7"如果未设置环境变量。

      相同的原则适用于包含因子py33的环境。

      优点是,作为开发人员,您可以根据需要设置TOXPYTHON环境变量,以防python2.7或python3.3不在您的路径中。这是(我猜)是因为tox在不同的Osses和分布上有关于解释器发现的一些弱点。请参阅:https://github.com/tox-dev/tox/projects/3

答案 1 :(得分:0)

python2.7python3.3是unix风格的名称。在w32上,python二进制文件通常被命名为C:\Python27\python.exeC:\Python33\python.exe。要创建在Linux和W32中同样有效的tox.ini,可以不同地定义TOXPYTHON

例如,请参阅我为AppVeyor tests定义TOXPYTHON的方式。