Могу ли я использовать Expect в Windows без установки Cygwin?

Expect - это модуль, используемый для порождения дочерних приложений и управления ими. Я заинтересован в Python и Ruby.

Ответ 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.

Ответ 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

Ответ 6

Я успешно использовал Pexpect под Cygwin. На данный момент нет другого пути из-за проблем совместимости POSIX под Windows.

Еще одна вещь: WExpect работает как Pexpect, на самом деле он требует Cygwin! На данный момент PExpect - лучший выбор.