Puis-je utiliser Expect sous Windows sans installer Cygwin?
Question
Expect est un module utilisé pour créer et contrôler des applications enfants. Je suis intéressé par Python et Ruby.
La solution
Il existe WExpect for Python .
Notes dans le fichier wexpect.py
(fautes de frappe non modifiées et mise en surbrillance ajoutée)
Wexpect est un port de pexpext pour Windows. Depuis Python pour Windows manque les modules requis (pty, tty, select, termios, fctnl et resource) à exécuter il était nécessaire de créer un back-end qui implémentait toutes les fonctions qui ont été utilisés qui repose sur ces modules. Wtty.py est ce back-end. Dans les consoles du monde Windows ne sont pas homogènes. Ils peuvent utiliser bas ou haut niveau des fonctions d’entrée et de sortie, et de traiter correctement les deux cas deux les processus enfants sont créés pour l'instauration de Spawn, avec un enfant intermédiaire qui peut lire en continu à partir de la console et envoyer ces données sur un tuyau à une instance de wtty. Spawner.py est responsable de la lecture et de la tuyauterie données.
J'ai laissé autant de code intact que possible et j'ai également essayé de laisser autant de commentaires. intact est possible (surtout pour les fonctions qui n’ont pas été modifiées), autant de des commentaires seront trompeurs dans leur relation à os spécifique fonctionnalité. De plus, les fonctions sendcontrol et sendeof ne sont pas implémentées à cette fois, je ne pouvais pas trouver de versions Windows significatives de ces fonctions.
De plus, les consoles n’ont pas de descripteur de fichier associé sur Windows, de sorte que la variable globale child_fd sera toujours None.
Autres conseils
winpexpect
est un port natif de pexpect
vers Windows. Vous pouvez le trouver ici:
Vous pouvez utiliser l'invite Windows CMD.
Python doit être installé dans votre installation Windows.
Ouvrez une invite de commande et exécutez la commande ci-dessous:
c: \ Utilisateurs \ xxx > pip installer pexpect
(si vous avez défini le chemin Python dans une variable système)
ou
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 dernière version de travail de wexpect est disponible sur http: // sage. math.washington.edu/home/goreckc/sage/wexpect/
Espérons qu'il sera bientôt fusionné en amont.
Utilisez pexpect https://github.com/pexpect/pexpect
."Pexpect est du pur Python" il fonctionnera donc n'importe où, sans Cygwin aussi,
modifier: pexpect dépend du module pty actuellement disponible uniquement pour Linux. C'est pourquoi Nik a suggéré d'utiliser wexpect, qui est un portage de pexpect
.J'ai utilisé Pexpect avec succès sous Cygwin. Pour le moment, il n'y a pas d'autre solution en raison de problèmes de compatibilité POSIX sous Windows.
Autre chose: WExpect fonctionne comme Pexpect, il nécessite en fait Cygwin! À ce stade, PExpect constitue un meilleur choix.