Могу ли я использовать Expect в Windows без установки Cygwin? - PullRequest
12 голосов
/ 25 июня 2009

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

Ответы [ 6 ]

17 голосов
/ 25 июня 2009

Существует 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.

6 голосов
/ 20 июля 2010

winpexpect - это собственный порт pexpect для Windows. Его можно найти здесь:

https://github.com/geertj/winpexpect

4 голосов
/ 18 мая 2016

Вы можете использовать приглашение 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
2 голосов
/ 06 апреля 2010

Последняя рабочая версия wexpect живет на http://sage.math.washington.edu/home/goreckc/sage/wexpect/

Надеюсь, это скоро будет объединено с апстримом.

2 голосов
/ 25 июня 2009

Используйте pexpect https://github.com/pexpect/pexpect

"Pexpect - это чистый Python", поэтому он будет работать где угодно, даже без Cygwin,

edit: pexpect зависит от модуля pty, который в настоящее время доступен только для Linux, поэтому Nik предложил вам использовать wexpect, который является портом pexpect

0 голосов
/ 24 июля 2015

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

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

...