如何从IPython 3.x/Jupyter Notebook中访问配置?

snt*_*nth 6 ipython ipython-notebook jupyter

特别是我想知道base_url代码运行的Notebook Server.

在IPython笔记本版本2.x中我曾经做过以下事情:

config = get_ipython().config
print config['NotebookApp']['base_url']
Run Code Online (Sandbox Code Playgroud)

但是,这在IPython Notebook 3.x/Jupyter笔记本中不再有效.

编辑:关于我想要实现的更多细节.

我在同一主机上的不同Docker容器中运行各种IPython服务器,这些容器通过不同的base_urls 访问.我想使用quantopian/qgrid包在Notebook中显示Pandas DataFrames.最初qgrid没有处理自定义base_url前缀来提供Javascript依赖项的本地副本,但上面的代码允许我base_url在IPython 2中找到并将相关内容base_url注入Javascript模板.

我还想在Notebook中使用mpld3库,在浏览他们的文档时,我发现他们也提到在"IPython 2.0+中,如果添加了url前缀,local = True可能会失败(例如通过设置NotebookApp.base_url)"所以这似乎不是一个孤立的问题,一个好的解决方案是值得的.

鉴于@ matt的评论如下,并且更多地考虑内核与前端拆分,有意义的是,无法从内核访问NotebookApp配置.实际上生成的JS代码需要知道它base_url是什么,所以如果有人能指出我可以在Notebook JS API中访问它的地方,那应该解决它.

snt*_*nth -1

经过大量深入研究 IPython 内部结构后,我发现了一些对我有用的东西:

from IPython.config.loader import load_pyconfig_files
config = get_ipython().config
profiledir = config['ProfileDir']['location']
nbconfig = load_pyconfig_files(['ipython_notebook_config.py'], profiledir)
print nbconfig['NotebookApp']['base_url']
Run Code Online (Sandbox Code Playgroud)

编辑:这适用于我的安装,但我现在明白内核并不是获取此信息的正确位置。一旦出现更好的答案,我可能会删除这个答案。