通过带有 tox 的命令设置 $PATH

Setting $PATH via a command with tox

目前正在使用 tox 测试 python 软件包,并使用 python 库 (chromedriver-binary) 安装 chromedriver.

该库创建了一个脚本 (chromedriver-path),当调用该脚本时会输出安装了 chromedriver 的路径。通常的使用方法是 运行:

export PATH=$PATH:`chromedriver-path`

我在 tox.ini

中尝试了以下但没有成功
setenv= 
  PATH = {env:PATH}{:}`chromedriver-path`

这个错误符合预期:

FileNotFoundError: [Errno 2] No such file or directory: 'chromedriver': 'chromedriver'

暗示 setenv 命令永远不会 called/run。

commands=
  export PATH=$PATH:`chromedriver-path

这失败了:

ERROR: InvocationError for command could not find executable export

如何进行这项工作?

命令无法更改其 parent 进程的环境变量,因此无法更改通过分叉 parent 启动的后续命令的环境变量;他们只能为自己或自己的 children.

设置环境变量

如果您能够在 开始 tox 之前收集 chromedriver-path 的输出,这将没有实际意义。如果它只在毒素本身创造的环境中可用,那么事情会变得更有趣。

您可以遵循的一种方法是将需要此路径条目的命令包装在添加它的垫片中。考虑更改:

commands=
  py test ...

至:

commands=
  sh -c 'PATH=$PATH:$(chromedrive-path); exec "$@"' _ py test ...