相关疑难解决方法(0)

在版本控制下使用IPython笔记本

IPython笔记本电脑置于版本控制之下的好策略是什么?

笔记本格式非常适合版本控制:如果想要版本控制笔记本和输出,那么这非常有效.当人们只想对输入进行版本控制时,就会产生烦恼,不包括可能是大型二进制blob的单元格输出(也就是"构建产品"),特别是对于电影和情节.特别是,我试图找到一个良好的工作流程:

  • 允许我选择包括或排除输出,
  • 如果我不想要它会阻止我意外地提交输出,
  • 允许我保持我的本地版本的输出,
  • 允许我看看当我使用我的版本控制系统更改输入时(即如果我只对版本控制输入但我的本地文件有输出,那么我希望能够看到输入是否已更改(需要提交) ).使用版本控制状态命令将始终注册差异,因为本地文件有输出.)
  • 允许我从更新的干净笔记本更新我的工作笔记本(包含输出).(更新)

如上所述,如果我选择包含输出(例如,在使用nbviewer时这是可取的),那么一切都很好.问题是,当我想要的版本控制输出.有一些工具和脚本可以剥离笔记本的输出,但我经常会遇到以下问题:

  1. 我不小心提交了一个带有输出的版本,从而污染了我的存储库.
  2. 我清除输出以使用版本控制,但实际上宁愿将输出保留在我的本地副本中(例如,有时需要一段时间来重现).
  3. Cell/All Output/Clear菜单选项相比,剥离输出的一些脚本会稍微改变格式,从而在差异中产生不必要的噪声.这可以通过一些答案来解决.
  4. 当将更改提取到文件的干净版本时,我需要找到一些方法将这些更改合并到我的工作笔记本中而无需重新运行所有内容. (更新)

我已经考虑过几个选项,我将在下面讨论,但还没有找到一个很好的综合解决方案.完整的解决方案可能需要对IPython进行一些更改,或者可能依赖于一些简单的外部脚本.我目前使用mercurial,但想要一个也适用于git的解决方案:理想的解决方案是版本控制不可知.

这个问题已经多次讨论过,但从用户的角度来看,没有明确或明确的解决方案.这个问题的答案应该提供明确的策略.如果它需要最近的(甚至开发)版本的IPython或一个易于安装的扩展,这很好.

更新:我一直在玩我修改过的笔记本版本,可以选择.clean使用Gregory Crosswhite的建议保存每次保存的版本.这满足了我的大多数约束,但是仍然没有解决以下问题:

  1. 这还不是一个标准的解决方案(需要修改ipython源.有没有办法通过简单的扩展来实现这种行为?需要某种on-save钩子.
  2. 我对当前工作流程的一个问题是拉动变化.这些将进入.clean文件,然后需要以某种方式集成到我的工作版本中.(当然,我总是可以重新执行笔记本,但这可能会很痛苦,特别是如果某些结果取决于长时间的计算,并行计算等).我还不知道如何解决这个问题.也许涉及像ipycache这样的扩展的工作流可能会起作用,但这似乎有点过于复杂.

笔记

删除(剥离)输出

  • 笔记本电脑运行时,可以使用Cell/All Output/Clear菜单选项删除输出.
  • 有一些用于删除输出的脚本,例如删除输出的脚本nbstripout.py,但不会产生与使用笔记本界面相同的输出.这最终包含在ipython/nbconvert repo中,但是已经关闭,说明这些更改现在包含在ipython/ipython中,但相应的功能似乎还没有包含在内. (更新)话虽如此,Gregory Crosswhite的解决方案显示这很容易做到,即使没有调用ipython/nbconvert因此,如果可以正确地连接它,这种方法可能是可行的.(然而,将它附加到每个版本控制系统似乎不是一个好主意 - 这应该以某种方式挂钩到笔记本机制.)

新闻组

问题

version-control ipython jupyter-notebook

548
推荐指数
14
解决办法
6万
查看次数

如何从终端运行.ipynb Jupyter笔记本?

我在.ipynb文件中有一些代码,并且我不需要IPython Notebook的"交互"功能.我想直接从Mac终端命令行运行它.

基本上,如果这只是一个.py文件,我相信我可以从命令行执行python filename.py..ipynb文件有类似的东西吗?

python ipython jupyter-notebook nbconvert

130
推荐指数
11
解决办法
17万
查看次数

如何将IPython笔记本导出为HTML以用于博客帖子?

将ipython笔记本变成html格式以便在博客文章中使用的最佳方法是什么?

将ipython笔记本变成PDF很容易,但我宁愿发布为html笔记本.

我发现如果我将笔记本下载为.ipynb文件,然后将其加载到gist上,然后使用ipython notebook viewer(nbviewer.ipython.org)查看它,然后抓取html源代码,我可以将其粘贴到一篇博客文章(或者只是将它作为html加载到任何地方),它看起来是正确的.但是,如果我直接使用ipython中的"打印视图"选项,则源包含一堆javascript而不是处理过的html,由于不直接包含图像和文本,因此无效.

%pastebin魔法也没有完成这个任务特别有用,因为它粘贴在Python代码,而不是IPython的笔记本电脑格式化代码.

编辑:请注意,这正在开发中; 看到接受的答案下的评论.

编辑2014年5月2日:根据纳撒尼尔的评论,ipython 2.0需要一个新的答案

ipython ipython-notebook

36
推荐指数
3
解决办法
1万
查看次数

如何在Jupyter上以HTML格式导出当前笔记本

如何将当前笔记本(从笔记本本身,使用Python)导出到HTML(到自定义输出路径)?

html python jupyter

11
推荐指数
3
解决办法
8636
查看次数

根据里面的注释记录和详细描述单个脚本

我将编写一组脚本,每个脚本独立于其他脚本,但有一些相似之处。所有脚本的结构很可能都相同,可能看起来像:

# -*- coding: utf-8 -*-
"""
Small description and information
@author: Author
"""

# Imports
import numpy as np
import math
from scipy import signal
...

# Constant definition (always with variable in capital letters)
CONSTANT_1 = 5
CONSTANT_2 = 10

# Main class
class Test():
    def __init__(self, run_id, parameters):
        # Some stuff not too important
        
    def _run(self, parameters):
        # Main program returning a result object. 
Run Code Online (Sandbox Code Playgroud)

对于每个脚本,我想编写文档并将其导出为 PDF。我需要一个库/模块/解析器来读取脚本、提取注释、代码并将其重新组合成所需的输出格式。

例如,在_run()方法中,注释中可能有几个详细的步骤:

def _run(self, parameters):
        # Step 1: we start …
Run Code Online (Sandbox Code Playgroud)

python documentation

6
推荐指数
1
解决办法
388
查看次数

如何在 Jupyter Lab 的“将笔记本导出为...”菜单上获得“将笔记本导出到 Html_toc”选项?

  • 如何从Jupyter 实验室的菜单中 jupyter nbconvert启用所有导出选项?Export Notebook As...
    • 具体来说,我怎样才能在菜单上找到这个选项?Export Notebook to Html_toc
  • 全新安装 Anaconda 后,默认导出菜单为:
    • 在此输入图像描述
  • 但是,如本期Add nbconvert export options to File --> Export notebook as#7612所示,还有其他选项,可以从控制台运行,但不会显示在菜单中。
  • 完整的菜单如下所示:
    • 在此输入图像描述

python jupyter jupyter-notebook jupyter-lab

3
推荐指数
1
解决办法
4078
查看次数