IPython/Jupyter Notebook中的只读单元格

29

是否有一种方式可以使用ipynb文件中的json格式标记ipython/jupyter笔记本中的单元格为只读?(例如,一个单元格属性"readonly": false或类似的东西。)如果没有,是否有一个jquery hack可以找到并禁止单元格中的双击事件?


目前还没有21253469这样的功能。您可能可以使用CodeMirror,因为它支持只读编辑字段... - Viktor Kerkez
3个回答

25

@Richard Ackon的回答需要针对JupyterLab进行调整:

  1. 打开属性检查器。

  2. 将焦点放在要锁定的单元格上。

  3. 将以下行添加到单元格元数据中:

{
    "trusted": true,
    "editable": false,
    "deletable": false
}
  • 点击勾号保存元数据......Tadah!你的单元格就不能被修改或删除了。

  • 自JupyterLab 2.0以来,属性检查器已内置(请注意,在JupyterLab 3.0中,它默认移动到右侧边栏)。对于旧版本的JupyterLab,您需要手动修改笔记本文件。

    输入图像描述

    不幸的是,输出仍然可以通过在菜单栏中故意选择该选项(编辑 > 清空输出)来清除。当然,只有在你想要清除输出而不是只更新它们运行单元时才会发生这种情况。

    来源


    我尝试了这个方法,但在修改单元格元数据后没有看到对勾标记。我只能看到撤消选项。可能是某些权限关系限制? - ziggy

    21

    是的,请按照以下步骤操作:

    1. 在菜单栏中选择视图(View)
    2. 将光标移至Cell Toolbar并选择Edit Metadata
    3. 在单元格的右上角会出现一个“Edit Metadata”按钮。
    4. 单击该按钮并编辑弹出的JSON。将可编辑键设置为truefalse以获得所需效果。

    JSON看起来应该像这样:

    {
      "deletable": false,
      "editable": false,
      "scrolled": true,
      "trusted": true
    }
    

    1
    没有关键字。只有一些类似于字典的引用。 - ProsperousHeart

    3

    有一个IPython的扩展程序可以实现这个功能:

    只读单元格扩展程序

    让它正常工作需要一些操作,但是它确实存在。


    2
    听起来你已经尝试让它工作了。如果是这样,你能在这里发布一些建议吗? - Dannid

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接