Posso usare Expect su Windows senza installare Cygwin?
Domanda
Expect è un modulo utilizzato per generare applicazioni figlio e controllarle. Sono interessato a Python e Ruby.
Soluzione
C'è WExpect per Python .
Note nel file wexpect.py
(errori di battitura invariati e evidenziazione aggiunta)
Wexpect è una porta di pexpext per Windows. Dal momento che Python per Windows manca i moduli richiesti (pty, tty, select, termios, fctnl e resource) da eseguire pexpect, era necessario creare un back-end che implementasse qualsiasi funzione che sono stati utilizzati che si basavano su questi moduli. Wtty.py è questo back-end. Nel le console del mondo Windows non sono omogenee. Possono usare il livello basso o alto funzioni di input e output di livello e per gestire correttamente entrambi i casi due i processi figlio vengono creati per instacne di Spawn, con un figlio intermedio che può leggere continuamente dalla console e inviare tali dati tramite una pipe in un'istanza di wtty. Spawner.py è ripristinabile dalla lettura e dal piping i dati.
Ho lasciato tutto il codice intatto che potevo e ho anche cercato di lasciare quanti più commenti intatto è possibile (soprattutto per le funzioni che non sono state modificate) così tanti dei commenti sarà fuorviante nella loro relazione con il sistema operativo specifico funzionalità. Inoltre, le funzioni sendcontrol e sendeof non sono state implementate su questa volta, poiché non sono riuscito a trovare versioni significative di Windows di queste funzioni.
inoltre, le console non hanno descrittori fild associati su Windows, quindi il la variabile globale child_fd sarà sempre Nessuna.
Altri suggerimenti
winpexpect
è una porta nativa di pexpect
su Windows. Può essere trovato qui:
È possibile utilizzare il prompt CMD di Windows.
Devi avere Python installato nell'installazione di Windows.
Apri un prompt cmd ed esegui il comando seguente:
C: \ Users \ xxx > pip install pexpect
(se hai impostato il percorso Python in una variabile di 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
L'ultima versione funzionante di wexpect risiede su http: // sage. math.washington.edu/home/goreckc/sage/wexpect/
Speriamo che presto verrà unito a monte.
Usa pexpect https://github.com/pexpect/pexpect
" Pexpect è puro Python " quindi funzionerà ovunque, anche senza Cygwin,
modifica: pexpect dipende dal modulo pty che è attualmente disponibile solo per Linux, quindi come Nik ha suggerito che dovresti usare wexpect che è una porta di pexpect
Ho usato con successo Pexpect sotto Cygwin. Per ora non c'è altro modo dovuto a POSIX problemi di compatibilità in Windows.
Un'altra cosa: WExpect funziona come Pexpect, infatti richiede Cygwin! A questo punto, PExpect è una scelta migliore.