通过带有 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 ...
目前正在使用 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 ...