永远重复“内核死亡,重新启动”

Evg*_*eev 7 python qtconsole jupyter jupyter-console

当我尝试跑步时

$ jupyter qtconsole
Run Code Online (Sandbox Code Playgroud)

控制台显示,并显示以下消息

Kernel died, restarting
________________________
Kernel died, restarting
________________________
Kernel died, restarting
________________________
Kernel died, restarting
________________________
Kernel died, restarting
________________________
Run Code Online (Sandbox Code Playgroud)

继续。

尝试$ jupyter qtconsole --debug没有打印其他任何东西,也没有添加

c.Application.log_level = 0
c.Session.debug = True
Run Code Online (Sandbox Code Playgroud)

进入 $USERHOME/.jupyter/jupyter_qtconsole_config.py

另外,我什么也没找到,$USERHOME/.ipython/profile_default/log/周围也没有其他目录。

自上次启动以来,我的配置没有任何改变jupyter-qtconsole

我至少如何找出内核出了什么问题?Jupyter中肯定有一些选项可以获取内核的STDERR输出,以查看导致异常的异常吗?

Evg*_*eev 0

鉴于内核是另一个进程,我能够使用 Process Explorer 捕获它启动时使用的命令行。命令行是

$ pythonw -m ipykernel -f "$USERHOME/AppData/Roaming/jupyter/runtime/kernel-2744.json"
Run Code Online (Sandbox Code Playgroud)

然后,我刚刚启动python并尝试导入ipykernel,并得到了这个:

$ python
Python 2.7.12 [...] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import ipykernel
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Programs\Python2712\lib\site-packages\ipykernel\__init__.py", line 2,
 in <module>
    from .connect import *
  File "C:\Programs\Python2712\lib\site-packages\ipykernel\connect.py", line 13,
 in <module>
    from IPython.core.profiledir import ProfileDir
  File "C:\Programs\Python2712\lib\site-packages\IPython\__init__.py", line 48,
in <module>
    from .core.application import Application
  File "C:\Programs\Python2712\lib\site-packages\IPython\core\application.py", l
ine 25, in <module>
    from IPython.core import release, crashhandler
  File "C:\Programs\Python2712\lib\site-packages\IPython\core\crashhandler.py",
line 28, in <module>
    from IPython.core import ultratb
  File "C:\Programs\Python2712\lib\site-packages\IPython\core\ultratb.py", line
119, in <module>
    from IPython.core import debugger
  File "C:\Programs\Python2712\lib\site-packages\IPython\core\debugger.py", line
 36, in <module>
    from IPython.utils import PyColorize, ulinecache
  File "C:\Programs\Python2712\lib\site-packages\IPython\utils\PyColorize.py", l
ine 55, in <module>
    from IPython.utils.py3compat import PY3
  File "C:\Programs\Python2712\lib\site-packages\IPython\utils\py3compat.py", li
ne 296, in <module>
    PYPY = platform.python_implementation() == "PyPy"
AttributeError: 'module' object has no attribute 'python_implementation'
>>> exit()
Run Code Online (Sandbox Code Playgroud)

这很快就导致了问题,正如这个答案中所述,我试图启动的目录jupyter qtconsole有一个名为 的子目录platform,它与模块的名称冲突。

虽然这修复了“内核死亡,重新启动”这一特定实例,但一般问题仍然存在:如何确保将堆栈跟踪(如上面的堆栈跟踪)报告给 Jupyter 控制台的用户,而不是内核默默地死亡?