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

StackOverflow https://stackoverflow.com/questions/1042778

  •  22-07-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

Есть Мы рассчитываем на Python.

Примечания в wexpect.py файл (опечатки изменены, а подсветка добавлена)

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

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

Другие советы

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

https://github.com/geertj/winpexpect

Вы можете воспользоваться командной строкой Windows.

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top