在ci/cd中使用paperpill。

papermill-nb-runner的Python项目详细描述


Travis Build StatusAzure Build StatusimageDocumentation StatusbadgebadgeCode style: black

paperpill for ci/cd是一个用于参数化、执行和分析的工具 Jupyter笔记本。

Paperpill允许您:

  • 参数化笔记本
  • 执行笔记本

这为笔记本的使用开辟了新的机会。为了 示例:

  • 也许你有一份财务报告,你想和它一起运行 在一个月的第一天或最后一天或 年初或年末,使用参数执行此任务 更容易的。
  • 是否要运行笔记本,并根据其结果选择 下一个要运行的特定笔记本?现在可以通过编程方式 执行工作流而不必从 手动从笔记本到笔记本。

对原始库的修改

  • 这是从papermill
  • 这适用于run-notebookgithub操作
  • 如果设置了log_output选项,笔记本的输出将转到stdout和名为papermill-nb-runner.out的文件
  • 跳过执行任何包含debug标记的单元格

安装

从命令行:

pip install papermill

对于所有可选的IO依赖项,可以指定单个捆绑包 比如s3,或者azure——或者使用all

pip install papermill[all]

python版本支持

这个库将支持Python2.7和3.5+,直到2020年Python2的生命周期结束。在这之后,Python2支持将停止,并且只维护3.x版本。

用法

参数化笔记本

若要参数化笔记本,请使用标记parameters指定一个单元格。

enable parameters in Jupyter

paperpill查找parameters单元格,并将此单元格视为在执行时传入的参数的默认值。paperpill将添加一个带有输入参数的标记为injected-parameters的新单元格,以便覆盖parameters中的值。如果没有用parameters标记单元格,则注入的单元格将插入笔记本的顶部。

另外,如果通过papermill重新运行笔记本,它将重用先前运行的injected-parameters单元格。在这种情况下,paperpill将用新运行的输入替换旧的injected-parameters单元。

image

执行笔记本

使用参数执行笔记本的两种方法是:(1)到 python api和(2)通过命令行接口。

通过python api执行
import papermill as pm

pm.execute_notebook(
   'path/to/input.ipynb',
   'path/to/output.ipynb',
   parameters = dict(alpha=0.6, ratio=0.1)
)

通过cli执行

下面是一个本地笔记本被执行并输出到 亚马逊S3账户:

$ papermill local/input.ipynb s3://bkt/output.ipynb -p alpha 0.6 -p l1_ratio 0.1

注意: 如果使用多个aws帐户,并且有properly configured your AWS credentials,那么可以通过在命令行设置AWS_PROFILE环境变量来指定要使用的帐户。例如:

$ AWS_PROFILE=dev_account papermill local/input.ipynb s3://bkt/output.ipynb -p alpha 0.6 -p l1_ratio 0.1

在上面的例子中,设置了两个参数:使用-p设置alphal1_ratio(也可以使用--parameters)。看起来像布尔值或数字的参数值将被解释为布尔值或数字。以下是用户设置参数的不同方式:

$ papermill local/input.ipynb s3://bkt/output.ipynb -r version 1.0

使用-r--parameters_raw,用户可以逐个设置参数。但是,与-p不同的是,该参数将保持字符串,即使它可能被解释为数字或布尔值。

$ papermill local/input.ipynb s3://bkt/output.ipynb -f parameters.yaml

使用-f--parameters_file,用户可以提供一个yaml文件,从中读取参数值。

$ papermill local/input.ipynb s3://bkt/output.ipynb -y "
alpha: 0.6
l1_ratio: 0.1"

使用-y--parameters_yaml,用户可以直接提供包含参数值的yaml字符串。

$ papermill local/input.ipynb s3://bkt/output.ipynb -b YWxwaGE6IDAuNgpsMV9yYXRpbzogMC4xCg==

使用-b--parameters_base64,用户可以提供包含参数值的base64编码的yaml字符串。

使用yaml传递参数时,通过-y-b-f,参数值可以是数组或字典:

$ papermill local/input.ipynb s3://bkt/output.ipynb -y "
x:
    - 0.0
    - 1.0
    - 2.0
    - 3.0
linear_function:
    slope: 3.0
    intercept: 1.0"

支持的名称处理程序

paperpill在执行期间支持以下输入和输出路径的名称处理程序:

开发指南

阅读CONTRIBUTING.md了解有关如何设置本地开发环境并将代码更改回papermill的指南。

有关开发指南,请查看DEVELOPMENT_GUIDE.md文件。这将告诉您如何对代码基进行特定的添加。

文档

我们主办Papermill documentation 准备好了。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在一个问题被连续正确回答三次/并添加差异后,我如何将程序循环回开始   Java中未实例化的匿名类   java如何在Android中录制视频,只允许横向模式和最长时间录制时间   java从另一个活动发送实时消息   多线程java线程和互斥   java禁用Spring安全日志   JAVA伊奥。StreamCorruptedException:在与子级和父级ProcessBuilder通信时写入子级中的标准输出时,流头无效   使用Java(HttpURLConnection)对Restheart进行身份验证(对于Mongodb)   java如何解决Jenkins中的SAXParseException?   java为什么我需要mockito来测试Spring应用程序?   计算sin-cos和tan时缺乏精度(java)   java Hibernate。不同项目中相同一对一映射的不同行为   java图像滑块:如何使用JavaFX将图像放在另一个图像上   java Mockito在使用when时抛出NotAMockException   http Java servlet发送回响应