Kann ich Expect unter Windows verwenden, ohne Cygwin zu installieren?
Frage
Expect ist ein Modul, das zum Erstellen und Steuern untergeordneter Anwendungen verwendet wird.Ich interessiere mich für Python und Ruby.
Lösung
Es gibt WExpect für Python.
Hinweise in der wexpect.py
Datei (Tippfehler unverändert und Hervorhebung hinzugefügt)
Wir erwarten ist eine Portierung von pexpext auf Windows.Da Python für Windows die erforderlichen Module (Pty, Tty, Select, Termios, FCTNL und Ressource) für die Ausführung von Pexpect fehlen, war es erforderlich, ein Back-End zu erstellen, das alle verwendeten Funktionen implementiert, die sich auf diese Module stützten. Wtty.py ist das Backend.In den Windows World Consoles sind Konsolen nicht homogen.Sie können Eingangs- und Ausgangsfunktionen mit niedrigem oder hohem Niveau verwenden und um beide Fälle korrekt umzugehen Eine Instanz von Wtty. Spawner.py ist von Lese- und Rohrleitungsdaten zurückzuführen.
Ich habe so viel Code intakt wie möglich gelassen und versucht, so viele Kommentare intakt zu lassen (besonders für Funktionen, die nicht geändert wurden), so dass viele der Kommentare in ihrer Beziehung zu OS -spezifischen Funktionen irreführend sein werden.Auch, Die Funktionen SendControl und SendEOF sind zu diesem Zeitpunkt nicht implementiert, da ich keine aussagekräftigen Windows -Versionen dieser Funktionen finden konnte.
Darüber hinaus haben Konsolen keine Fild -Deskriptoren unter Windows, sodass die globale variable child_fd immer keine ist.
Andere Tipps
winpexpect
ist ein nativer Port von pexpect
auf Windows. Es ist hier zu finden:
Sie können die Windows-CMD-Eingabeaufforderung verwendet werden.
Sie müssen Python in Ihrer Windows-Installation installiert haben.
eine Befehlszeile öffnen und den folgenden Befehl ausführen:
C:\Users\xxx>pip install pexpect
(wenn Sie den Python-Pfad in einer Systemvariablen gesetzt haben)
oder
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
Die neueste Arbeitsversion von wexpect lebt unter http: // Salbei. math.washington.edu/home/goreckc/sage/wexpect/
Hoffentlich wird es bald verschmolzen Upstream werden.
Mit pexpect https://github.com/pexpect/pexpect
"Pexpect ist reiner Python", so dass es überall läuft, ohne Cygwin auch
edit: pexpect hängt von pty-Modul, das derzeit nur für Linux verfügbar ist, so wie Nik vorgeschlagen, dass Sie sollten wexpect werden, der eine Portierung von pexpect ist
Ich habe erfolgreich Pexpect unter Cygwin verwendet. Denn jetzt gibt es keine andere Möglichkeit, aufgrund POSIX Kompatibilitätsprobleme unter Windows.
Eine andere Sache: WExpect wie Pexpect, in der Tat funktioniert es erfordert Cygwin! An diesem Punkt ist pexpect eine bessere Wahl.