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

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

6 ответов


здесь WExpect для Python.

Заметки в wexpect.py файл (опечатки без изменений и подсветка добавлена)

Wexpect является портом pexpext для Windows. Так как python для Windows не хватает необходимые модули (pty, tty, select, termios, fctnl и resource) для запуска pexpect, необходимо было создать бэк-энд, который реализовывал бы любые функции которые были использованы, которые полагались на эти модули. Wtty.py is этот бэк-энд. В консоли Windows world не являются однородными. Они могут использовать низкий уровень или высокий уровень входных и выходных функций, а для корректного решения обоих случаев два дочерние процессы создаются для instacne из Spawn, с промежуточным дочерним это может непрерывно считываться с консоли и отправлять эти данные по каналу к примеру, wtty. Spawner.py ответственность от чтения и трубопроводов данные.

Я оставил столько кода неповрежденным, сколько я мог, а также пытался оставить как можно больше комментариев intact возможно (espicially для функций, которые не были изменены) так много комментарии будут вводить в заблуждение в их отношении к конкретной ОС функциональность. Кроме того,функции sendcontrol и sendeof unimplemnted на на этот раз, поскольку я не смог найти значимые версии Windows этих функций.
кроме того, консоли не имеют связанных дескрипторов fild в Windows, поэтому глобальный переменная child_fd всегда будет None.


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

https://github.com/geertj/winpexpect


вы можете использовать приглашение CMD Windows.

вам необходимо установить Python в вашей установке Windows.

Откройте командную строку cmd и выполните следующую команду:

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\f2578bcd0efeabc7e2b0079cd62d3955c1477f2e55aa5031a4
Successfully built pexpect
Installing collected packages: ptyprocess, pexpect
Successfully installed pexpect-4.0.1 ptyprocess-0.5.1

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

надеюсь, он будет объединен вверх по течению в ближайшее время.


использовать pexpect https://github.com/pexpect/pexpect

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

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


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

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