¿Puedo usar Expect en Windows sin instalar Cygwin?
Pregunta
Expect es un módulo utilizado para generar aplicaciones secundarias y controlarlas. Estoy interesado en Python y Ruby.
Solución
Hay WExpect for Python .
Notas en el archivo wexpect.py
(errores tipográficos sin cambios y resaltado agregado)
Wexpect es un puerto de pexpext para Windows. Dado que Python para Windows carece los módulos necesarios (pty, tty, select, termios, fctnl y resource) para ejecutar Pexpect, era necesario crear un back-end que implementara cualquier función que se usaron para confiar en estos módulos. Wtty.py es este back-end. En Las consolas mundiales de Windows no son homogéneas. Pueden usar bajo nivel o alto funciones de entrada y salida de nivel, y para tratar correctamente ambos casos dos Los procesos hijo se crean para instacne de Spawn, con un hijo intermedio que puede leer continuamente desde la consola y enviar esos datos a través de una tubería a una instancia de wtty. Spawner.py es responsable de la lectura y las tuberías datos.
Dejé todo el código intacto que pude y también intenté dejar tantos comentarios intacto es posible (especialmente para funciones que no han sido modificadas) de los comentarios serán engañosos en su relación con el sistema operativo específico funcionalidad Además, las funciones sendcontrol y sendeof no están implementadas en esta vez, ya que no pude encontrar versiones significativas de Windows de estas funciones.
Además, las consolas no tienen descriptores de archivos asociados en Windows, por lo que La variable global child_fd siempre será None.
Otros consejos
winpexpect
es un puerto nativo de pexpect
para Windows. Se puede encontrar aquí:
Puede usar el indicador CMD de Windows.
Necesita tener Python instalado en su instalación de Windows.
Abra un indicador de cmd y ejecute el siguiente comando:
C: \ Users \ xxx > pip install pexpect
(si ha configurado la ruta de Python en una variable del sistema)
o
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
La última versión funcional de wexpect se encuentra en http: // sage. math.washington.edu/home/goreckc/sage/wexpect/
Esperemos que se fusionen pronto.
Use pexpect https://github.com/pexpect/pexpect
" Pexpect es Python puro " por lo que se ejecutará en cualquier lugar, sin Cygwin también,
edit: pexpect depende del módulo pty que actualmente está disponible solo para Linux, por lo que Nik sugirió que debería usar wexpect, que es un puerto de pexpect
He usado con éxito Pexpect en Cygwin. Por ahora no hay otra forma debido a POSIX problemas de compatibilidad en Windows.
Otra cosa: WExpect funciona como Pexpect, de hecho, ¡requiere Cygwin! En este punto, PExpect es una mejor opción.