Pexpect和PyCharm - 适用于设备的ioctl

gol*_*enk 11 python pexpect pycharm python-3.x

我正在尝试运行一个基本的Pexpect脚本:

import pexpect
ftp_process = pexpect.spawn('ftp')
ftp_process.interact()
Run Code Online (Sandbox Code Playgroud)

当代码直接从终端运行时,代码按预期工作.如果我使用PyCharm的run/debug运行代码,我会收到以下错误:

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')
Run Code Online (Sandbox Code Playgroud)

似乎Pexpect如何与PyCharm的运行/调试窗口交互,默认情况下不起作用.有没有办法通过特定的PyCharm设置来解决这个问题?如果没有,还有其他方法可以解决这个问题吗?

编辑

上面的代码只是一个缩短的例子,导致了问题.Pexpect的的其他的能力(如expect(),sendline()等)仍需要的话.

小智 -1

看起来 pexpect 在您的默认 Python 安装中已正确安装,可能还有另一个 python 实例未安装或正确安装了 pexpect 库。在 PyCharm 设置中尝试将其指向默认/正确的 python 安装。