【问题标题】:iPython - "broken" shell/terminal after realoading DjangoiPython - 重新加载 Django 后“损坏”的外壳/终端
【发布时间】:2010-07-15 19:13:31
【问题描述】:

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

...
from IPython.Shell import IPShellEmbed
ipshell = IPShellEmbed()
ipshell()
...

这给了我在所需位置的交互式外壳。现在,如果修改源代码,Django 会自动重新加载,可能没有正确退出 iPython shell,并且“破坏”我的终端仿真器(xterm,konsole) - 文本变得不可见等(如果在 Django 中运行的 iPython 使用 Ctrl 终止,效果相同+d)。

有什么建议可能导致这种情况吗? (我可能以错误的方式使用 iPython,但谁知道呢)。

【问题讨论】:

  • 我在import pdb; pdb.set_trace 上遇到了完全相同的问题,所以它可能不是 iPython 特有的问题。但是,我只注意到在使用 virtualenv(带有 virtualenvwrapper)时会发生这种情况,所以也许这就是导致它的原因。
  • 遇到了同样的问题,会喜欢anwser。 +1
  • 不只是 virtualenv。它发生在我在 Ubuntu 10.10 中运行默认 python 的情况下。

标签: django ipython


【解决方案1】:

我无法回答为什么会出错,但我可以告诉你如何从中恢复:退出调试服务器并发出reset 命令。

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

【讨论】:

  • 谢谢! 'reset' 也可以解决 'import pdb; 的问题; pdb.set_trace()' 上面 Aram Dulyan 指出。
【解决方案2】:

此问题已修复:http://code.djangoproject.com/ticket/15565

谢谢姜戈。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    • 2021-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    相关资源
    最近更新 更多