自从Ubuntu15.04 (3.2)提供的版本以来,pexpect经历了巨大的变化。当使用pexpect安装最新版本的pip3时,这个以前成功地通过串行控制台进行终端仿真的最小程序不再工作了:
#!/usr/bin/python3
import serial
import pexpect.fdpexpect
ser = serial.Serial("/dev/ttyS0", baudrate=115200)
spawn = pexpect.fdpexpect.fdspawn(ser)
spawn.interact()在pexpect.fdpexpect.fdspawn类中缺少了新的API交互()方法,它以前就在那里。
问题:是如何使用较新版本的pexpect (目前为4.2.1)来提供与文件对象的免费手动交互(在本例中为串口)?
或者,问题/工作-:我认识到,对于这样一个简单的用例,我使用了一些很重的机器,对于其他库,有什么建议可以和早期版本的pexpect一样吗?
代码读取:示例使用pexpect.spawn(command_str)获取具有interact()方法的spawn对象;实际上,该pexpect.spawn()与直接创建具有此方法的pexpect.pty_spawn.spawn对象相同。另一方面,pexpect.fdpexpect.fdspawn()将构造一个缺少interact()方法的pexpect.fdpexpect.fdspawn类。这两个派生类都是从pexpect.spawnbase.SpawnBase类派生的。根据我的快速阅读,这看起来像回归,这是在4.x版本的过程中重构的结果。
发布于 2016-09-23 02:53:33
浏览帕普 问题,找到#351、#356和新提交的#377。通过我的快速阅读,这似乎是在迈向新的主要版本4的过程中由于未完成的重构而带来的一种倒退。
pexpect。github用户@takluyver (显然是pexpect的维护者)在评论第351期时或多或少暗示了这些途径:
@jquast对此有什么想法(和#356)?我感到很遗憾,我们破坏了人们对fdspawn所做的事情,但我真的不想让它继承pty spawn类,现在它在Windows上工作了,我认为保存它也很重要。 也许我们应该说:
pip install pexpect<4)https://stackoverflow.com/questions/39641627
复制相似问题