Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从IPython 3.x/Jupyter笔记本中访问配置?_Ipython_Ipython Notebook_Jupyter - Fatal编程技术网

如何从IPython 3.x/Jupyter笔记本中访问配置?

如何从IPython 3.x/Jupyter笔记本中访问配置?,ipython,ipython-notebook,jupyter,Ipython,Ipython Notebook,Jupyter,我特别想知道运行代码的笔记本服务器的base\u url 在IPython笔记本2.x版中,我曾经执行以下操作: config=get\u ipython().config 打印配置['NotebookApp']['base\u url'] 但是,这在IPython Notebook 3.x/Jupyter笔记本中不再有效 编辑:关于我想要达到的目标的更多细节 我在同一台主机上的不同Docker容器中运行不同的IPython服务器,这些容器通过不同的base\u urls访问。我想用这个软件包

我特别想知道运行代码的笔记本服务器的
base\u url

在IPython笔记本2.x版中,我曾经执行以下操作:

config=get\u ipython().config
打印配置['NotebookApp']['base\u url']
但是,这在IPython Notebook 3.x/Jupyter笔记本中不再有效

编辑:关于我想要达到的目标的更多细节

我在同一台主机上的不同Docker容器中运行不同的IPython服务器,这些容器通过不同的
base\u url
s访问。我想用这个软件包在笔记本中显示熊猫数据框。最初,
qgrid
没有处理定制的
base\u url
前缀来提供Javascript依赖项的本地副本,但是上面的代码允许我在IPython 2中找到
base\u url
,并将相关的
base\u url
注入Javascript模板

我还想使用笔记本中的库,在浏览他们的文档时,我发现他们也提到了,所以这似乎不是一个孤立的问题,一个好的解决方案是值得的


鉴于@matt在下面的评论,并考虑更多关于内核与前端剥离的问题,NotebookApp配置无法从内核访问是有道理的。实际上,生成的JS代码需要知道什么是
base\u url
,因此,如果有人能告诉我在笔记本JS API中可以在哪里访问它,应该可以解决这个问题。

在深入研究IPython内部结构之后,我发现了一些适合我的东西:

从IPython.config.loader导入加载\u pyconfig\u文件
config=get_ipython().config
profiledir=config['profiledir']['location']
nbconfig=load_pyconfig_文件(['ipython_notebook_config.py'],profiledir)
打印nbconfig['NotebookApp']['base\u url']

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

如果您发布javasscript,并假设您在笔记本中(请记住,在JS中并不一定意味着笔记本,您可以是Atom Hydrogen或Jupyter Sidecar),您可以使用snipet,如:

require(['base/js/utils'], function(utils){
    var base_url = utils.get_body_data('base-url')
})
在笔记本的
标签上设置
数据库url
属性

这样下去,虽然没有保证。通常,扩展应安装在
nbextensions
文件夹中,该文件夹应自动正确解析:

require.config({

      ...
      paths: {
        nbextensions : '<base url>/nbextensions',
        kernelspecs : '<base url>/kernelspecs',
...
})
require.config({
...
路径:{
nbextensions:“/nbextensions”,
kernelspecs:“/kernelspecs”,
...
})

Nbextension是一个搜索路径,因此如果在服务器上设置正确,则不应该(大多数情况下)你必须自己在自定义url上提供服务,也不能自己在前端处理
base\u url

你为什么想要
base\u url
。你想实现什么,然后我们可以讨论从哪里获得它。这取决于你是做JS扩展、服务器扩展还是内核扩展。@Matt谢谢你的评论。我有广告我对这个问题做了更详细的解释。在JS扩展中确实需要这样做。我没有仔细考虑它,并试图在内核中用Python解决它,因为这是我更熟悉的。添加了答案,没有真正了解mpld3和qgrid是如何做的,但我希望这会有所帮助。如果缺少一些东西,请提供反馈欢迎使用。请准备好在版本4中使用它。根据设计,运行代码的内核不知道笔记本服务器。