参数化和运行Jupyter和nteract笔记本
项目描述
papermill 是一个用于参数化、执行和分析 Jupyter Notebooks 的工具。
Papermill 允许您
- 参数化 笔记本
- 执行 笔记本
这为笔记本的使用开辟了新的机会。例如
- 也许您有一个财务报告,您希望在不同的月份的第一天或最后一天或年初或年末运行,使用参数可以使这项任务更容易。
- 您想运行一个笔记本,并根据其结果选择要运行的下一个特定笔记本吗?现在您可以通过程序化地 执行工作流 来执行,而无需手动从笔记本复制和粘贴。
Papermill 采用了基于我们在数据管道中大规模使用笔记本的经验的 有见地的 方法来参数化和执行笔记本。
安装
从命令行
pip install papermill
对于所有可选的 io 依赖项,您可以选择单个包,例如 s3
或 azure
,或者使用 all
。要使用 Black 格式化参数,可以添加额外的 requires ['black']。
pip install papermill[all]
Python 版本支持
此库目前支持 Python 3.8+ 版本。由于 Python org 官方已经停止支持次要 Python 版本,Papermill 将在未来类似地停止支持。
使用方法
参数化笔记本
要参数化您的笔记本,请指定带有标签 parameters
的单元格。
Papermill 会查找 parameters
单元格,并将此单元格视为在执行时传递的参数的默认值。Papermill 将添加一个新的带有 injected-parameters
标签的单元格,其中包含输入参数,以覆盖 parameters
中的值。如果没有带有 parameters
标签的单元格,则注入单元格将插入到笔记本的顶部。
此外,如果您通过 Papermill 重新运行笔记本,它将重用先前的运行中的 injected-parameters
单元格。在这种情况下,Papermill 将用新运行输入替换旧的 injected-parameters
单元格。
执行笔记本
执行带有参数的笔记本有两种方式:(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
也有效) 设置的 alpha
和 l1_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 支持以下名字处理器在执行期间用于输入和输出路径
-
本地文件系统:
local
-
HTTP, HTTPS 协议:
http://, https://
-
Amazon Web Services: AWS S3
s3://
-
Azure: Azure DataLake Store,Azure Blob Store
adl://, abs://
-
Google Cloud: Google Cloud Storage
gs://
开发指南
阅读 CONTRIBUTING.md 了解如何设置本地开发环境并将代码更改提交回 Papermill 的指南。
有关开发指南,请查看 DEVELOPMENT_GUIDE.md 文件。这应能为您提供如何在代码库中添加特定内容的指导。
文档
我们在 ReadTheDocs 上托管了 Papermill 文档。
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。