【发布时间】:2017-11-21 17:07:18
【问题描述】:
我打开了一个 python Jupyter 笔记本,但没有注意到它处于只读、不可信模式。现在如何保存我的更改?
我尝试过但没有帮助的事情:
- 文件 -> 制作副本
- 文件 -> 保存和检查点
- 文件 -> 下载为
- 文件 -> 信任笔记本
【问题讨论】:
我打开了一个 python Jupyter 笔记本,但没有注意到它处于只读、不可信模式。现在如何保存我的更改?
我尝试过但没有帮助的事情:
【问题讨论】:
解决此问题的一个技巧:
希望这个 hack 有所帮助
【讨论】:
jypyter 正在限制这种技术。我在下面发布了另一种方法。
这是一个更具技术性的答案,它提供了一个可以从命令行或以编程方式使用的服务器端解决方案。
https://jupyter-notebook.readthedocs.io/en/latest/notebook.html#introduction
Trusting Notebooks 防止不受信任的代码在用户的 代表笔记本打开时,我们存储每个受信任的签名 笔记本。笔记本服务器验证此签名时,笔记本 被打开。如果没有找到匹配的签名,Javascript 和 HTML 输出将不会显示,直到它们被重新生成 重新执行单元格。
您自己完全执行的任何笔记本都将被考虑 受信任,其 HTML 和 Javascript 输出将在加载时显示。
如果您需要在不重新执行的情况下查看 HTML 或 Javascript 输出,并且 你确定笔记本没有恶意,你可以告诉 Jupyter 在命令行中信任它:
$ jupyter trust mynotebook.ipynb
有关信任机制的更多详细信息,请参阅笔记本文档中的安全性。
【讨论】:
如here 所述,您可以轻松运行以下命令(它也解决了我的问题):
sudo chmod 777 <notebook_file_name>
【讨论】:
JSON 的结构"metadata" 下将"editable": false, 更改为"editable": true,
【讨论】:
我同意上面的第一个答案,但您必须再添加一个步骤(下面的第 4 步),以便复制的所有单元格不会粘贴到单个单元格中。
1) Select all cells (or cells that you need) in your read-only notebook. You can select all cells by clicking on the first cell and then shift+clicking the last cell.
2) Copy all cells using CTRL+C (COMMAND+C if you are using MAC)
3) Create a new jupyter notebook page
4) CLICK IN THE MARGIN OF THE NEW CELL (***to close it for editing***), then...
5) Click CTRL+V (COMMAND+V if you are using MAC)
6) Save your new notebook
默认情况下,Jupyter 将光标插入到第一个单元格中,这会将其打开以进行编辑。
为避免将所有内容粘贴到打开以进行编辑的单元格中,您必须将其关闭以进行编辑。
【讨论】:
您可以导航到以下选项卡 - 查看 --> 单元格工具栏 --> 编辑元数据
现在,所有单元格都将具有“编辑元数据”,单击它并将“可编辑”设置为“真”或删除该 json 条目。 单元格现在可以编辑了:)
注意:您可能必须为要编辑的笔记本中的每个单元格执行此操作
【讨论】: