Подпроцесс Python выдает [Errno 2] Нет такого файла или каталога, ошибка возникает только тогда, когда он находится на удаленном хосте

У меня питон 2.6. Я получаю броски подпроцесса [Errno 2] Нет такого файла или каталога, только когда я запускаю скрипт через ssh.

Например, если я запускаю скрипт вручную на машине, ошибок нет, но если я делаю ssh hostname script.py --host hostname, он генерирует ошибку и сообщает мне, что файл "/usr/lib64/python2.6/subprocess.py отсутствует, но это не так, так как этот файл есть на обоих серверах.

Я написал вызов подпроцесса следующим образом:

p4 = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)

Команда просто содержит список.

Есть идеи, почему это работает локально, а не удаленно?


person frany    schedule 19.06.2015    source источник
comment
Не могли бы вы дать полную трассировку? Если вы можете дать код в script.py, это будет полезно   -  person Nilesh    schedule 19.06.2015
comment
Оказывается, проблема заключалась в том, как я вызывал команду. Я не указывал абсолютный путь. Команда находится в /sbin, и, поскольку ее не было в моем PATH, она не выполнялась и продолжала генерировать эту ошибку.   -  person frany    schedule 19.06.2015
comment
Вы можете дать ответ на свой же ответ, другим это поможет.   -  person Nilesh    schedule 21.06.2015


Ответы (1)


Решение для этого состояло в том, чтобы просто установить для команды абсолютный путь, например, вместо mke2fs мне нужно было /sbin/mke2fs.

person frany    schedule 22.06.2015
comment
если есть несколько команд, вы можете вместо этого передать PATH envvar: env=dict(os.environ, PATH=os.environ.get('PATH', os.defpath)+":/sbin"), чтобы избежать изменения всех команд при изменении PATH. - person jfs; 22.06.2015