iPython-“;“破碎的”;重新加载Django后的外壳/终端

iPython-“;“破碎的”;重新加载Django后的外壳/终端,django,ipython,Django,Ipython,我将iPython shell嵌入到Django脚本中(使用development server,例如本地主机上的runserver),如下所示: ... from IPython.Shell import IPShellEmbed ipshell = IPShellEmbed() ipshell() ... 这样我就可以在所需的位置使用交互式shell。现在,如果修改源代码,Django会自动重新加载,可能不会正确退出iPython shell,并“中断”我的终端仿真器(xterm,kons

我将iPython shell嵌入到Django脚本中(使用development server,例如本地主机上的runserver),如下所示:

...
from IPython.Shell import IPShellEmbed
ipshell = IPShellEmbed()
ipshell()
...
这样我就可以在所需的位置使用交互式shell。现在,如果修改源代码,Django会自动重新加载,可能不会正确退出iPython shell,并“中断”我的终端仿真器(xterm,konsole)-文本变为不可见,等等(如果Django内部运行的iPython以Ctrl+d终止,则效果相同)


有什么建议可以解释是什么原因造成的吗?(我可能使用iPython的方式不对,但谁知道呢)。

我无法回答为什么会出错的问题,但我可以告诉您如何从中恢复:退出调试服务器并发出
重置
命令


防止这种情况发生的另一种方法是在
runserver
命令上使用
--reload
开关。这意味着Django在更改后不会重新加载,但它也不会破坏调试器。

此问题已得到修复:


谢谢Django。

我在导入pdb时遇到了完全相同的问题;pdb.set_trace,因此它可能不是iPython特定的问题。然而,我只注意到在使用virtualenv(与VirtualEnvRapper一起使用)时会发生这种情况,所以也许这就是造成这种情况的原因。遇到同样的问题,我会喜欢anwser+1不仅仅是虚拟的。我在Ubuntu 10.10中运行默认python时也会遇到这种情况。谢谢“重置”也可以解决“导入pdb”的问题;pdb.set_trace()”上面由Aram Dulyan指出。