Expect - это модуль, используемый для порождения дочерних приложений и управления ими. Я заинтересован в Python и Ruby.
Могу ли я использовать Expect в Windows без установки Cygwin?
Ответ 1
Существует WExpect для Python.
Примечания в файле wexpect.py
(опечатки без изменений и добавлена подсветка)
Wexpect - это порт pexpext для Windows. Так как python для Windows не хватает необходимые модули (pty, tty, select, termios, fctnl и resource) для запуска pexpect, нужно было создать бэкэнд, который бы реализовывал любые функции которые были использованы, которые опирались на эти модули. Wtty.py это бэкэнд. В мировые консоли Windows не являются однородными. Они могут использовать низкий уровень или высокий уровень входных и выходных функций, и чтобы правильно иметь дело с обоими случаями два дочерние процессы создаются для instacne из Spawn с промежуточным дочерним процессом который может непрерывно читать с консоли и отправлять эти данные по каналу к примеру Wtty. Spawner.py отвечает за чтение и передачу сообщений данных.
Я оставил как можно больше кода, а также постарался оставить как можно больше комментариев. нетронутым возможно (особенно для функций, которые не были изменены) так много комментарии будут вводить в заблуждение в их отношении к ОС конкретных функциональность. Кроме того, функции sendcontrol и sendeof не выполняются при на этот раз, так как я не смог найти значимые версии этих функций для Windows.
Кроме того, консоли не имеют связанных дескрипторов полей в Windows, поэтому Глобальная переменная child_fd всегда будет None.
Ответ 2
winpexpect
является родным портом pexpect
для Windows. Его можно найти здесь:
Ответ 3
Вы можете использовать приглашение Windows CMD.
В вашей установке Windows должен быть установлен Python.
Откройте командную строку и выполните следующую команду:
C:\Users\xxx>pip install pexpect
(если вы указали путь Python в системной переменной)
или
C:\Users\xxx>c:\python27\scripts\pip.exe install pexpect
Collecting pexpect
Downloading pexpect-4.0.1.tar.gz (143kB)
100% |################################| 147kB 1.2MB/s
Collecting ptyprocess>=0.5 (from pexpect)
Downloading ptyprocess-0.5.1-py2.py3-none-any.whl
Building wheels for collected packages: pexpect
Running setup.py bdist_wheel for pexpect
Stored in directory: C:\Users\xxx\AppData\Local\pip\Cache\wheels\f2\65\89\09578bcd0efeabc7e2b0079cd62d3955c1477f2e55aa5031a4
Successfully built pexpect
Installing collected packages: ptyprocess, pexpect
Successfully installed pexpect-4.0.1 ptyprocess-0.5.1
Ответ 4
Использовать pexpect https://github.com/pexpect/pexpect
"Pexpect - чистый Python", поэтому он будет работать где угодно, без Cygwin,
edit: pexpect зависит от модуля pty, который в настоящее время доступен только для Linux, так как Nik предположил, что вы должны использовать wexpect, являющийся портом pexpect
Ответ 5
Последняя рабочая версия wexpect живет в http://sage.math.washington.edu/home/goreckc/sage/wexpect/
Надеюсь, что скоро он будет слит вверх по течению.
Ответ 6
Я успешно использовал Pexpect под Cygwin. На данный момент нет другого пути из-за проблем совместимости POSIX под Windows.
Еще одна вещь: WExpect работает как Pexpect, на самом деле он требует Cygwin! На данный момент PExpect - лучший выбор.