IPython Notebook在打开

时间:2015-08-13 09:18:59

标签: python ipython ipython-notebook

我有一个IPython noteboook,我试图以某种方式设置它,以便在打开笔记本时自动运行所有单元格。

此行为与包含小部件的笔记本的已保存输出不同。当运行包含它们的单元格时,小部件似乎只为我呈现。请考虑以下示例:

from IPython.display import display
from IPython.html.widgets import IntSlider

w = IntSlider()
display(w)

在执行单元格之前,不会显示滑块。

这可以通过Notebook Metadata或配置文件来完成吗?

编辑: https://try.jupyter.org/似乎正在执行以下操作:请注意,当您打开页面并在打开页面时显示输出时笔记本没有运行。

EDIT2:添加示例。

3 个答案:

答案 0 :(得分:15)

  1. 将下面的代码段粘贴到普通(代码)单元格中
  2. 执行它(按 [Ctrl + Enter] )和
  3. 保存笔记本。
  4. 下次你重新加载它 所有单元格都将运行,检查点将以其刷新的输出保存。

    $ ./bin/rdivals stuff dat/ivals.txt
     phi[   0] : -1.000047e+00
     phi[   1] : -1.000047e+00
     phi[   2] : -1.000047e+00
     phi[   3] : -1.000047e+00
     phi[   4] : -1.000047e+00
     phi[   5] : -1.000047e+00
     phi[   6] : -1.000047e+00
     phi[   7] : -1.000047e+00
    

    请注意,如果清除上述单元格的输出,则必须重复步骤2和3。

    TIP

    您可能会考虑这些更适合您可能尝试实现的解决方案:

    • Jupyer Thebe:在与ipython-kernels后端通信的静态页面中嵌入代码片段。
    • nteract nteract:从笔记本构建基于Electron的应用程序。
    • Dashboards:允许预先配置笔记本电脑输出网格(“仪表板”)的“官方”工作,打包并将其作为独立的网络应用程序提供。

    您可以在this article中找到有关情况的摘要。

    asked中的before other sites类似问题,但在this googlegroup thread中,有人提交了解决方案,并且群组主持人删除了它(!)< / em>,显然是为了保护地球上的生命:-) 所以,小心吧!

答案 1 :(得分:4)

我刚刚找到了一种很容易做到这一点的方法。如果您安装了nbextensions包(https://github.com/ipython-contrib/jupyter_contrib_nbextensions),则会调用其中一个扩展名&#34;初始化单元格&#34;并允许您标记某些单元格在加载笔记本时自动运行。

答案 2 :(得分:3)

我不相信这是可能的。

ipython不执行代码,除非它是1)故意和2)信任。否则,您将遇到加载包含恶意代码的笔记本的情况。

您可以在此处查看ipythons安全模型的详细信息:https://ipython.org/ipython-doc/dev/notebook/security.html。特别是关于笔记本打开时代码执行的部分:&#34;我们需要解决的安全问题是没有代码应该执行只是因为用户打开了他们没有写的笔记本&#34;

虽然您可以在笔记本上设置显式信任,但我不确定这是否也允许自动执行代码。我还没有看到任何类似的东西,但也许我还没有看到足够的努力。我在其他地方看到自动代码执行并不是核心ipython包中可用的东西。请在此处查看此问题:https://github.com/ivanov/ipython-trainingwheels/issues/35

除了信任,我怀疑这是不可能的另一个原因是因为1)自动代码执行将取代当前保存在笔记本中的任何现有输出,这可能不太理想,以及2)某些笔记本可能包含复杂的代码,计算量很大,每次打开笔记本时都不想运行。