几乎唯一可行的方法(据我所知)是从IDE中运行Python作为子进程.这避免了当前Python解释器的“污染”,这使得程序很可能以与独立启动它相同的方式运行. (如果您遇到此问题,请检查子进程环境.)以这种方式,您可以使用“调试模式”运行脚本
p = subprocess.Popen(args=[sys.executable, '-m', 'pdb', 'scriptname.py', 'arg1'],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
这将在调试器提示符下启动Python.您需要运行一些调试器命令来设置断点,您可以这样做:
o,e = p.communicate('break scriptname.py:lineno')
如果这样做,o应该是设置断点后Python解释器的正常输出,并且e应该为空.我建议您使用它并在代码中添加一些检查以确保断点是否正确设置.
之后,您可以启动运行的程序
p.communicate('continue')
此时,您可能希望将输入,输出和错误流挂接到您嵌入IDE中的控制台.您可能需要使用事件循环执行此操作,大致如下:
while p.returncode is None:
o,e = p.communicate(console.read())
console.write(o)
console.write(e)
您应该认为该代码段是有效的伪代码,因为根据您的控制台的工作原理,它可能需要一些修补才能使其正确.
如果这看起来过于混乱,你可以使用Python的pdb和bdb模块的功能稍微简化一下这个过程(我分别