当我从包含名为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!
答案 0 :(得分:2)
回溯的最后几行显示在IPython启动时正在导入CPython的模块pdb
。 Line 72 of the pdb.py source显示另一个名为cmd
的模块由“pdb.py”导入。
Python docs在搜索导入时显示以下顺序,我认为这对IPython来说是相同的:
由于启动过程涉及导入名为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会话与该目录路径。一旦我在另一台机器上结束会话,问题就解决了。