我很了解 tox.ini 文件上的 passenv
和 setenv
使用,但我面临着一种情况,我想取消定义一些变量,以便它们不包含在通配符 passenv。
示例
[testenv]
passenv = ANSIBLE_*
# I how do I assure that ANSIBLE_INVENTORY is not passed?
最佳答案
引用文档:
tox will take care of environment isolation for you: it will strip away all operating system environment variables not specified via
passenv
.
也就是说,您只是不提及您不想传递的变量。
对于 passenv
,文档说:
You can override these variables with the
setenv
option.
由于未设置的 shell 变量看起来像一个空字符串,因此您可以尝试将 setenv
更改为 ''
所有您不想传递的变量。它可能有效也可能无效,具体取决于代码如何使用这些变量,因为空环境变量和未设置的环境变量之间存在差异。
我在 tox 文档中没有看到任何有选择地取消设置变量的方法。我建议使用一些比 ANSIBLE_*
弱的通配符,这样它们就不会让您想要保持未设置的变量进入。
另一个解决方案是取消运行 tox
的 shell 中的变量,以便 tox 进程无法访问和传递它们:
#!/bin/sh
unset ANSIBLE_KEYS_TO_KINGDOM
tox "$@"
关于python - 如何使用 python tox 取消设置环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57293456/