Могу ли я использовать Expect в Windows без установки Cygwin?
Вопрос
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. Его можно найти здесь:
Вы можете воспользоваться командной строкой 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 - лучший выбор.