У меня возникли проблемы с запуском простой программы HelloWorld через модуль Pexpect. У меня есть каталог с HelloWorld binary - hw, expect script - m.py и каталог с тем же скриптом внутри.Не удается запустить программу из другого каталога через Pexpect
├── hw
├── m.py
├── main.cpp
└── dir
└── m.py
Вот мой ожидать сценарий:
import pexpect
child = pexpect.spawn("./hw", cwd = /absolute/path/to/parent/directory")
child.expect("!")
print(child.before)
Если я запустить скрипт из родительского каталога, все работает отлично. Однако, если я запускаю его из любой другой директории, как директории здесь, я получаю следующее сообщение об ошибке:
pexpect.ExceptionPexpect: The command was not found or was not executable: ./hw.
Как бороться с этим?
Я пробовал это на Mac OS и Ubuntu. Бинарный файл HelloWorld отлично работает, он устанавливается как исполняемый. Python 2.7.6, pexpect 3.3
Я предполагаю, что 'cwd' устанавливается в качестве рабочей директории порожденного процесса, но на самом деле не установлен в качестве рабочего каталога вызывающего процесса. Это означает, что вы не можете использовать './Hw' и должны использовать'/absolute/path/to/parent/directory/hw' в этом аргументе. –
@EtanReisner Я не уверен Если я правильно вас понимаю, но в моем случае аргумент cwd указывает на каталог, в котором находится hw (дерево изображает этот каталог), и я назвал его parent, потому что я пытаюсь запустить скрипт из в нем находится внутреннее устройство, и он терпит неудачу. – Egor
@ Пункт EtanReisner заключается в том, что запуск программы с именем пути../Hw гарантированно завершится неудачей из любого каталога, отличного от того, который содержит 'hw'. –