Установка $ PATH с помощью команды tox - PullRequest
0 голосов
/ 13 апреля 2019

В настоящее время используется tox для тестирования пакета Python и используется библиотека Python (chromedriver-binary) для установки chromedriver.

Эта библиотека создает скрипт (chromedriver-path), который при вызове выводит PATH, где установлен chromedriver. Обычный способ использовать это для запуска:

export PATH=$PATH:`chromedriver-path`

Я безуспешно пробовал следующее в tox.ini

setenv= 
  PATH = {env:PATH}{:}`chromedriver-path`

Эта ошибка, как и ожидалось:

FileNotFoundError: [Errno 2] Нет такого файла или каталога: 'chromedriver': 'chromedriver'

Подразумевается, что команда setenv никогда не вызывается / не запускается.

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

Это не с:

ОШИБКА: InvocationError для команды не удалось найти исполняемый файл экспорта

Как мне сделать эту работу?

1 Ответ

1 голос
/ 13 апреля 2019

Команды не могут изменять переменные среды своих родительских процессов и, следовательно, не могут изменять переменные среды последующих команд, запускаемых путем разветвления этого родителя; они могут устанавливать переменные окружения только для себя или своих детей.

Если бы вы смогли собрать выходные данные chromedriver-path до , начиная с tox, это было бы спорным. Если он доступен только в среде, которую сам создает токсины, то все становится немного интереснее.

Один из подходов, которым вы можете следовать, - это обернуть команды, которые нуждаются в эту запись пути, в шим, который ее добавляет. Рассмотрите возможность изменения:

commands=
  py test ...

до:

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