Python исполняемый файл подпроцесса = '/ bin / bash' не работает - PullRequest
0 голосов
/ 06 мая 2020

Я запускаю Airflow внутри контейнера Docker (через Astro CLI ), и часть моего кода Airflow в Python использует стороннюю библиотеку, которая полагается на Python ' s subprocess.Popen.

Проблема:

Я вызываю команду, которая находится только в PATH /bin/bash, потому что я добавил ее в .bash_profile и .bashrc, но оболочка /bin/sh по умолчанию не может найти команду. Как я могу получить Python s subprocess.Popen, чтобы запустить его в оболочке bash, где требуемая команда находится в PATH?

Я пробовал использовать shell=True и аргумент executable для каждого Python s Popen docs :

Исполняемый аргумент указывает программу замены для выполнения. Это очень редко нужно. Когда shell=False, исполняемый файл заменяет программу на выполнение, указанную в args. Однако исходные аргументы по-прежнему передаются программе. Большинство программ рассматривают программу, заданную аргументом args, как имя команды, которое может отличаться от фактически выполняемой программы. В POSIX имя args становится отображаемым именем исполняемого файла в таких утилитах, как ps. Если shell=True, то в POSIX исполняемый аргумент указывает заменяющую оболочку для /bin/sh.

Но это не работает. Смотрите мои попытки на скриншоте ниже использовать команду BCP. Есть предложения?

shell attempts to use BCP

...