Выполните команду в PATH, используя Python - PullRequest
0 голосов
/ 22 декабря 2011

У меня DVCS Mercurial на моем PATH в системе Windows, соответствующей системе GNU / Linux. Если я открываю оболочку Bash в GNU / Linux, я могу выполнить hg (команда Mercurial), то же самое происходит, если я открываю командную строку в Windows.

Я хотел бы выполнить hg и проверить состояние выхода и захватить вывод. Я знаю о модуле подпроцесса и check_output. Но я не могу заставить его использовать мой путь. Я бы предпочел не жестко кодировать путь, так как я хочу, чтобы скрипт работал, пока у вас есть Mercurial на вашем пути.

Пример был бы очень признателен.

С праздником!

1 Ответ

2 голосов
/ 22 декабря 2011

Если у вас уже есть hg на вашем пути, вам не нужно ничего особенного в вызове subprocess, поскольку вы должны получить ту же среду.

В любом случае, если вы хотите явно добавитьПеременная среды PATH для вашего подпроцесса, вы можете сделать это:

env = os.environ.copy()
env['PATH'] = <whatever you need here>
subprocess.Popen(<hg command>, env=env)

Этот код копирует среду, которую вы получаете из вашей оболочки, и перезаписывает переменную PATH.Возможно, вы захотите добавить к PATH вместо этого, если вы собираетесь использовать тот же словарь env для запуска других команд.

Нет необходимости копировать всю среду, но это предотвратит другие проблемы, которые выможет произойти, потому что отсутствуют другие переменные среды.

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