Mik*_*ike 21 ipython ipython-notebook jupyter jupyter-notebook
在IPython笔记本(例如v3.1)中,我可以添加一个~/.ipython/profile_default/static/custom/custom.js文件来执行一些自定义JavaScript.例如,我可以这样做:
require(['base/js/namespace', 'base/js/events'], function(IPython, events) {
console.log("A");
events.on('app_initialized.NotebookApp', function() {
console.log("B");
});
console.log("C");
});
Run Code Online (Sandbox Code Playgroud)
然后,在JS控制台中,我会看到A,接着是B,然后是C.
现在,从版本4.0开始,他们将它分解为Jupyter笔记本.加载相同的文件(尽管事实是它在下面~/.ipython,而不是在下面~/.jupyter),并且代码被执行.但是,我不再看到这B条线.我猜应用程序没有初始化.我仍然看到它在源代码中被触发,但是后来会发生,还是只是不起作用?
我如何让事情再次发挥作用?我不需要再等了app_initialized吗?在某处记录了这些吗?
这个页面似乎表明,现在的方法是创建一个自定义扩展并将所有操作放在该load_ipython_extension函数中.是对的吗?如果是这样,mathjax怎么样?和CodeMirror选项?
Mat*_*tW. 12
使用custom.js仍然适用于我,但它似乎移动了一点点.
目前(版本4.2.3)以及即将5.0发布的文档中,它位于~/.jupyter/custom/custom.js.请参阅http://jupyter-notebook.readthedocs.io/en/latest/examples/Notebook/JavaScript%20Notebook%20Extensions.html#custom.js上的文档.
您可以custom.js通过在笔记本中执行此代码段来显示路径和内容:
from jupyter_core.paths import jupyter_config_dir
jupyter_dir = jupyter_config_dir()
import os.path
custom_js_path = os.path.join(jupyter_dir, 'custom', 'custom.js')
print("searching for custom.js in ", custom_js_path)
# my custom js
if os.path.isfile(custom_js_path):
with open(custom_js_path) as f:
print(f.read())
else:
print("You don't have a custom.js file")
Run Code Online (Sandbox Code Playgroud)
我如何让事情再次发挥作用?我不需要等待app_initialized了吗?
我对推荐的方法没有深入的了解,但是使用Jupyter/IPython 4.0,等待"notebook_loaded.Notebook"而不是"app_initialized.NotebookApp".即使用这一行:
events.on("notebook_loaded.Notebook", function () {
Run Code Online (Sandbox Code Playgroud)
这个问题出现在Github问题跟踪器上 - jupyter 4.0的问题 - 以及最近更新的链接,这些更新似乎简化了扩展的加载:代码更新:
"通过手动编辑notebook.json.默认情况下它位于〜/ .jupyter/nbconfig/notebook.json:"
{
"load_extensions": {
"notify": true,
"theme_toggle": true
}
}
Run Code Online (Sandbox Code Playgroud)
添加类似的东西"code_folding/main": true似乎也有效.
所以我的理解是,这将取代custom.js用于加载扩展的用途?
| 归档时间: |
|
| 查看次数: |
9533 次 |
| 最近记录: |