我正在编写一个支持调试的python编辑器。我必须像IDE一样从我的应用程序调试交互式 python代码,但没有很多选项。
我知道bdb和pdb,但我必须将此脚本保存到文件中并发送命令,如跳过,继续,退出等。
我正在尝试使用subprocess lib和pdb,但我没有取得好成绩。
-Wall
如何使这在python 3.x中有效?我只需要一条路径,但最好只使用没有外部依赖的python 3。
P.S。我正在使用PyQt5。
答案 0 :(得分:0)
来自communicate
上的子流程文档:
Popen.communicate(输入=无)
与流程交互:将数据发送到stdin。从stdout和stderr读取数据,直到达到文件结尾。等待进程终止。可选的输入参数应该是要发送到子进程的字符串,如果没有数据应该发送给子进程,则为None。
因此,当调用communicate
时,它将等待进程终止。它不能再次调用,因为该过程已经终止。
您可能应该直接从stdout
和stderr
直接阅读。这必须在不同的线程中完成,或者您必须偶尔轮询一次以查看数据是否可用。每个命令可能需要一段未知的时间才能由pdb执行,因此您不知道输出何时准备就绪。您可以通过写入流程stdin
来发送命令。
您可能还想查看pexpect
模块here。但是它还没有很好的Windows支持。