内核已经死亡,自动重启失败

时间:2015-01-14 19:39:25

标签: python

当我从包含名为error的文件的目录运行ipython notebook时,我收到以下cmd.py

所以我的问题是为什么?,因为当我重命名或删除文件时,一切都很完美。

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/home/me/.virtualenvs/demo/lib/python3.4/site-packages/IPython    /__init__.py", line 48, in <module>
    from .core.application import Application
  File "/home/me/.virtualenvs/demo/lib/python3.4/site-packages/IPython    /core/application.py", line 40, in <module>
    from IPython.core import release, crashhandler
  File "/home/me/.virtualenvs/demo/lib/python3.4/site-packages/IPython    /core/crashhandler.py", line 28, in <module>
    from IPython.core import ultratb
  File "/home/me/.virtualenvs/demo/lib/python3.4/site-packages/IPython/core/ultratb.py", line 110, in <module>
    from IPython.core import debugger
  File "/home/me/.virtualenvs/demo/lib/python3.4/site-packages/IPython/core/debugger.py", line 59, in <module>
    from pdb import Pdb as OldPdb
  File "/usr/local/lib/python3.4/pdb.py", line 135, in <module>
    class Pdb(bdb.Bdb, cmd.Cmd):
AttributeError: 'module' object has no attribute 'Cmd'
2015-01-14 22:23:36.895 [NotebookApp] WARNING | KernelRestarter: restart failed
2015-01-14 22:23:36.896 [NotebookApp] WARNING | Kernel 1005e1cf-b1b4-4f9d-        af22-e65c310cfa51 died, removing from map.
ERROR:root:kernel 1005e1cf-b1b4-4f9d-af22-e65c310cfa51 restarted failed!

3 个答案:

答案 0 :(得分:2)

回溯的最后几行显示在IPython启动时正在导入CPython的模块pdbLine 72 of the pdb.py source显示另一个名为cmd的模块由“pdb.py”导入。

Python docs在搜索导入时显示以下顺序,我认为这对IPython来说是相同的:

  1. 当前工作目录
  2. PYTHONPATH
  3. 依赖于安装的默认值
  4. 由于启动过程涉及导入名为cmd的模块,并且在解释器看起来首先有一个名为“cmd.py”的文件,它会尝试导入该文件,当然这不是'有他们正在寻找的东西。具体来说,您的文件“cmd.py”没有Cmd class,因此会引发AttributeError

    删除或重命名当前工作目录中的“cmd.py”将解决此问题。

答案 1 :(得分:1)

打开Python解释器会话,然后运行以下命令:

import sys
from pprint import pprint as pp

pp(sys.path)

您会注意到第一个条目是'',这意味着当前目录。当pdb尝试导入名为cmd的模块时,它实际上是在当前目录中导入文件,(我认为)没有它正在寻找的代码。删除或重命名该文件可以解决您的问题。

答案 2 :(得分:-1)

我刚遇到这个问题并开始疯狂地寻找内核死亡的原因。至少对我自己来说,通过反复试验找到了解决方案。

我尝试在另一个目录中打开一个新笔记本,内核并没有死在那里。所以我发现内核只是为了特定的目录路径而死。这背后的原因是:我已经在另一台计算机上有一个活动的iPython会话与该目录路径。一旦我在另一台机器上结束会话,问题就解决了。