通过Tox命令设置$ PATH

时间:2019-04-13 16:11:49

标签: python tox

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

此库创建一个脚本(chromedriver-path),该脚本在被调用时会输出安装chromedriver的PATH。常用的方法是运行:

export PATH=$PATH:`chromedriver-path`

我在tox.ini

中尝试了以下操作,但均未成功
setenv= 
  PATH = {env:PATH}{:}`chromedriver-path`

此错误是预期的:

  

FileNotFoundError:[错误2]没有此类文件或目录:'chromedriver':'chromedriver'

暗示永远不会调用/运行setenv命令。

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

此操作失败,并显示以下信息:

  

错误:命令的InvocationError找不到可执行文件导出

我如何进行这项工作?

1 个答案:

答案 0 :(得分:1)

命令不能更改其父进程的环境变量,因此也不能更改通过分叉该父进程而启动的后续命令的环境变量;他们只能为自己或自己的孩子设置环境变量。

如果您能够在开始chromedriver-path之前收集tox 的输出,那就没有意思了。如果只能在tox本身创建的环境中使用,那么事情会变得更加有趣。

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

commands=
  py test ...

收件人:

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