【问题标题】:Specify Python version-specific testenv settings, when platform is used使用平台时,指定 Python 版本特定的 testenv 设置
【发布时间】:2020-11-28 23:47:01
【问题描述】:

如何设置一个 testenv 来指定特定 Python 版本的设置?作为一个最小的例子,

[tox]
envlist = py{36,37,38,39}-{mylinux,macos,mywindows}
skipsdist = True

[testenv]
platform = mylinux: linux
           mymacos: darwin
           mywindows: win32
setenv =
    mylinux: PLATFORM = linux
    mymacos: PLATFORM = macos
    mywindows: PLATFORM = windows

commands =
    {envpython} -c "print('{env:PLATFORM}')"  # This env is used in setup.py
    # other commands

[testenv:py36]
deps =
    pydantic  # No dataclasses until py37

如果我运行tox -e py36-mylinuxpydantic 将不会被安装。如果我运行tox -e py36,它会说

ERROR:   py36: unresolvable substitution(s):
    commands: 'PLATFORM'
Environment variables are missing or defined recursively.

如何为特定 Python 版本指定 testenv 设置,而不必在环境名称中指定所有其他信息(尤其是当 envlist 变长时)?

【问题讨论】:

    标签: python tox


    【解决方案1】:

    同理;将其放入[testenv](并删除[testenv:py36]):

    deps =
        py36: pydantic  # No dataclasses until py37
    

    使用tox --showconfig验证配置

    PS。 tox 不结合环境;一旦你有一个单独的[testenv:py36],它就不会与mylinux合并。

    【讨论】:

    • py36-mylinux: pydantic 是否适合组合使用?你能指出我的参考吗?
    • 1.我刚刚尝试过,是的——它将deps 限制在一个环境中。 2.tox.readthedocs.io/en/latest/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-30
    • 2022-07-15
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多