我正在考虑使用*。Ipynb文件作为真相的来源,并以编程方式将它们“编译”为.py文件,用于计划的作业/任务。
我所理解的做到这一点的唯一方法是通过GUI。有没有办法通过命令行来实现?
我正在考虑使用*。Ipynb文件作为真相的来源,并以编程方式将它们“编译”为.py文件,用于计划的作业/任务。
我所理解的做到这一点的唯一方法是通过GUI。有没有办法通过命令行来实现?
当前回答
有一个非常好的包叫做nb_dev,它是为在Jupyter notebook中编写Python包而设计的。与nbconvert一样,它可以将笔记本转换为.py文件,但它更灵活、更强大,因为它有许多不错的额外创作功能,可以帮助您在PyPI上开发测试、文档和注册包。它是快速发展起来的。人工智能的人。
它有一点学习曲线,但文档很好,总体上不难。
其他回答
给出的解决方案仅适用于转换单个.py文件。下面是一个转换目录及其子目录中的所有.py文件的解决方案。
首先,您需要安装一次只转换一个文件的工具,如ipynb-py-convert
PIP安装ipynb-py-convert
然后cd到你的文件夹。py文件和目录的位置。然后我们在目录和子目录中的所有文件上递归地运行这个工具:
powershell:
foreach ($f在Get-ChildItem "."过滤器*。ipynb-py-convert $f。FullName " $(美元f.FullName.Substring (0, f.FullName.Length-6美元)). py”}
现在,如果你想用批处理转换从。ipynb转换到。py,你可以运行:
foreach ($f在Get-ChildItem "."-Filter *.py -递归){ipynb-py-convert $f。FullName " $(美元f.FullName.Substring (0, f.FullName.Length-3)美元).ipynb "}
这在我探索.py文件时给了我很大帮助。我做了一个项目的副本,运行这段代码,并快速在Jupiter测试代码的不同部分作为单元格等等。我希望它能帮助更多的人。
我发现有两种方法可以用命令行将Jupyter Notebook转换为普通的Python脚本。下面是Jupyter笔记本的示例和两个工具的输出。
1. 使用nbconvert
nbconvert是在Jupyter Notebook用户界面下载中作为功能使用的工具。它可以用作命令行工具:
jupyter nbconvert --to python notebook.ipynb
Python脚本示例:
2. 使用jupytext
jupytext是一个保持.ipynb文件与.py文件同步的包。它还可以用于在命令行中转换.ipynb文件。它支持几种类型的转换:
转换为轻格式的Python脚本
jupytext --to py notebook.ipynb
python脚本示例:
转换为百分比格式的Python脚本
jupytext --to py:percent notebook.ipynb
Python脚本示例:
如果你不想每次保存时都输出一个Python脚本,或者你不想重新启动IPython内核:
在命令行中,你可以使用nbconvert:
$ jupyter nbconvert --to script [YOUR_NOTEBOOK].ipynb
作为一种技巧,您甚至可以通过预先挂起在IPython笔记本中调用上述命令!(用于任何命令行参数)。在笔记本里:
!jupyter nbconvert --to script config_template.ipynb
在添加——to脚本之前,选项是——to python或——to=python,但在转向语言无关的笔记本系统时,它被重命名了。
使用nbconvert 6.07和jupyter client 6.1.12:
转换jupyter笔记本到python脚本
$ jupyter nbconvert mynotebook.ipynb --to python
转换jupyter笔记本到python脚本指定输出文件名
$ jupyter nbconvert mynotebook.ipnb --to python --output myscript.py
您可以从IPython API完成此操作。
from IPython.nbformat import current as nbformat
from IPython.nbconvert import PythonExporter
filepath = 'path/to/my_notebook.ipynb'
export_path = 'path/to/my_notebook.py'
with open(filepath) as fh:
nb = nbformat.reads_json(fh.read())
exporter = PythonExporter()
# source is a tuple of python source code
# meta contains metadata
source, meta = exporter.from_notebook_node(nb)
with open(export_path, 'w+') as fh:
fh.writelines(source)