跳转到主要内容

参数化和运行Jupyter和nteract笔记本

项目描述

CI CI image Documentation Status badge badge PyPI - Python Version Code style: black papermill Anaconda-Server Badge pre-commit.ci status

papermill 是一个用于参数化、执行和分析 Jupyter Notebooks 的工具。

Papermill 允许您

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

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

  • 也许您有一个财务报告,您希望在不同的月份的第一天或最后一天或年初或年末运行,使用参数可以使这项任务更容易。
  • 您想运行一个笔记本,并根据其结果选择要运行的下一个特定笔记本吗?现在您可以通过程序化地 执行工作流 来执行,而无需手动从笔记本复制和粘贴。

Papermill 采用了基于我们在数据管道中大规模使用笔记本的经验的 有见地的 方法来参数化和执行笔记本。

安装

从命令行

pip install papermill

对于所有可选的 io 依赖项,您可以选择单个包,例如 s3azure,或者使用 all。要使用 Black 格式化参数,可以添加额外的 requires ['black']。

pip install papermill[all]

Python 版本支持

此库目前支持 Python 3.8+ 版本。由于 Python org 官方已经停止支持次要 Python 版本,Papermill 将在未来类似地停止支持。

使用方法

参数化笔记本

要参数化您的笔记本,请指定带有标签 parameters 的单元格。

enable parameters in Jupyter

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

此外,如果您通过 Papermill 重新运行笔记本,它将重用先前的运行中的 injected-parameters 单元格。在这种情况下,Papermill 将用新运行输入替换旧的 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 执行

以下是一个示例,演示本地笔记本在本地执行并将输出写入 Amazon S3 账户

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

注意:如果您使用多个 AWS 账户,并且您已经 正确配置了 AWS 凭据,则可以通过设置命令行中的 AWS_PROFILE 环境变量来指定要使用哪个账户。例如

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

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

$ 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,用户可以提供一个包含参数值的 YAML 字符串,该字符串已 base64 编码。

当使用 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"

支持的名字处理器

Papermill 支持以下名字处理器在执行期间用于输入和输出路径

开发指南

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

有关开发指南,请查看 DEVELOPMENT_GUIDE.md 文件。这应能为您提供如何在代码库中添加特定内容的指导。

文档

我们在 ReadTheDocs 上托管了 Papermill 文档

项目详情


发布历史 发布通知 | RSS 源

下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。

源代码发行版

papermill-2.6.0.tar.gz (78.3 kB 查看哈希值)

上传时间 源代码

构建发行版

papermill-2.6.0-py3-none-any.whl (38.6 kB 查看哈希值)

上传时间 Python 3

由以下机构支持