Я запускаю 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
. Есть предложения?