我正在对 IPython 内核进行一项小型研究,并尝试从中获取调试日志并了解它如何与笔记本交互。现在看起来我的发行版中附带的文档和示例配置已经完全过时了。
请先阅读本节,然后再提供官方文档的链接
首先,我使用以下命令为 IPython 和笔记本创建了配置文件:
$ ipython profile create
$ jupyter notebook --generate-config
正如预期创建了三个文件:
在这些文件中我发现了类似的评论片段:
# Set the log level by value or name.
# c.Application.log_level = 0
我尝试在 jupyter 配置中取消注释它。它没有添加更多细节,而是完全禁用了
jupyter
进程的控制台输出。我也尝试了值50
它有相同的结果,值DEBUG
在启动时给了我Python错误。
我还在 ipython 的配置中使用了这些值,但我无法找到日志文件位置。
在邮件列表命令行选项中提到了
--log-level=DEBUG
,它确实适用于 jupyter。但我真的想在配置文件中保留此设置,并且也有内核的调试信息。
配置选项
NotebookApp.log_level
和 IPKernelApp.log_level
也没有任何改变。
我相信这种功能仍然在愿望清单上:
https://github.com/ipython/ipython/issues/8570
但是你可以尝试这样的事情:
jupyter notebook --debug > log.file 2>&1
或
ipykernel kernel --debug > log.file 2>&1
您还可以尝试使用选项 --debug 在不附加前端的情况下启动 ipython 内核:
ipython kernel --debug
通过在
c.Session.debug = True
中设置 jupyter_notebook_config.py
,您可以获得有关内核和前端之间交互的大量信息。
这是我推荐的步骤
找到您内核使用的 python bin/exe。您应该能够在内核文件中找到它,或者可以从 jupyter 笔记本日志中看到它。例如,从下面的日志中,您可以看到它是 /opt/anaconda3/envs/ray_python39/bin/python
[D 09:12:21.717 NotebookApp] 启动内核:['/opt/anaconda3/envs/ray_python39/bin/python', '-m', 'ipykernel_launcher', '-f', 'Library/Jupyter/runtime/内核-c106812b-d169-43bd-b305-159235683941.json']
使用步骤 1 中找到的路径运行 python 执行。然后运行你的代码,它会告诉你内核失败的确切原因。