próbuję uruchomić podstawowego skryptu Pexpect:Pexpect i pycharm - Niewłaściwy ioctl dla urządzenia
import pexpect
ftp_process = pexpect.spawn('ftp')
ftp_process.interact()
Gdy kod jest uruchamiany bezpośrednio z terminala, kod działa zgodnie z oczekiwaniami. Jeśli uruchomić kod za pomocą pycharm Run/debug pojawia się następujący błąd:
Traceback (most recent call last):
File "/path/to/code/test.py", line 3, in <module>
ftp_process.interact()
File "/usr/local/lib/python3.4/site-packages/pexpect/__init__.py", line 1645, in interact
mode = tty.tcgetattr(self.STDIN_FILENO)
termios.error: (25, 'Inappropriate ioctl for device')
Wydaje się, że jak Pexpect współdziała z oknem run/debugowania pycharm nie działa domyślnie. Czy jest jakiś sposób, aby temu zaradzić przy określonym ustawieniu PyCharm? Jeśli nie, czy jest jakiś inny sposób obejścia tego?
EDIT
powyżej Kod jest jedynie skrócona przykład co prowadzi do problemu. Inne możliwości pexpect (takie jak expect()
, sendline()
, itp.) Są nadal pożądane.
PyCharm musi dostarczyć pseudo-tty (pty) zamiast potoku, np. Kod działa dobrze z poziomu Emacsa. Możesz spróbować 'pty.spawn ('ftp')' – jfs
@ J.F.Sebastian, to jest odpowiedź, działa. –
@ J.F.Sebastian: pty działa w tym przypadku, ale jest to po prostu uproszczony przykład. Nadal potrzebuję mocy pexpect. Nie widzę sposobu, aby PyCharm dostarczył pseudo-tty, ale być może ktoś, kto odpowie na to pytanie, będzie wiedział. – golmschenk