Выполнение команд bash_profile с python - PullRequest
0 голосов
/ 17 января 2019

В моем терминале bash я могу запустить следующую команду:

$SCHRODINGER/run volume_calc.py -imae type.mae

и это работает правильно.

Затем я пытаюсь выполнить ту же команду в скрипте Python; где я попробовал следующий подход:

import subprocess
subprocess.run(['$SCHRODINGER/run', 'volume_calc.py', '-imae', 'type.mae'])

который выдает ошибку:

FileNotFoundError: [Errno 2] No such file or directory: '$SCHRODINGER/run'

Я не совсем понимаю, в чем может быть проблема, поскольку я могу нормально выполнять основные команды bash. Спасибо за любую помощь.

1 Ответ

0 голосов
/ 17 января 2019

Расширение переменной среды по умолчанию не выполняется с использованием подпроцесса, если вы не передаете аргумент shell в вызов subprocess.run. Это передаст ваши аргументы в оболочку (например, bash), которая будет обрабатывать желаемое расширение и любые другие функции, подобные оболочке.

Вот необходимое изменение кода:

subprocess.run(['$SCHRODINGER/run', 'volume_calc.py', '-imae', 'type.mae'], shell=True)

Обратите внимание, что стоит прочитать соображений безопасности , чтобы использовать это, приведенное в документации по python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...