jupytext and nbdev
Jupytext
界面点击操作
当你 Pair 一种文件,保存时,会自动生成你 pair 关联的格式的文件。在其中一个文件修改的任何文本都会同步到两个文件中。
首先你有文件
然后,在jupyter lab中 ctrl + shift + c,选择pair的文件类型(jupyter notebook在功能菜单中找到)
然后,保存
关联成功。py文件可以在自己喜欢IDE环境编辑,ipynb文件可以同步展示。删除任意一个,都可以再次恢复。
取消pair,则不会同步。(unpair 取消关联)
py文件中包含的 metadata 如下格式
命令行操作
Notebook to text
1 |
|
text to notebook
1 |
|
text to notebook and preserve outputs
1 |
|
命令行pair操作
1 |
|
同步paired notebooks,当在其他文件中修改后,同步到ipynb
1 |
|
应用code style(flake8, black, isort)
1 |
|
支持文件格式
NBDEV开发
step 1 新建git
使用 the template 创建一个github repo
1 |
|
可选,使用git自带的服务器:在setting中
在edit中添加生成的网址
step 2 编辑settings.ini
编辑settings.ini (注意这里的lib_name就是生成的包名,所以有空格很不规范)。前面的个人相关信息基本都要取消注释,后面在git上创建网页展示环境要check。
1 |
|
step 3 安装git_hooks
1 |
|
出现conflict错误时
1 |
|
step 4 编辑代码
开始编辑ipynb文件
标记类别:
- #default_exp
对于新创建的 .ipynb,需要加入
#default_exp target_module_name
这会导出生成以下py文件
1
lib_name/target_module_name.py
lib_name与settings时,保持一致
- #export:效果如下
导出后显示如下
如果是类里面的方法,显示doc需要使用函数 show_doc
1
from nbdev,showdoc import show_doc
- 不加标记会显示代码和输出
测试代码也可以写在这里,不代标记
1
assert say_hello("Jeremy")=="Hello Jeremy!"
step 5 nbdev_build_lib
1 |
|
注意,发生keyError时,多半是settings.ini配置不完整
生成新的lib包文件夹及py文件
core.py
step 6 编写index文件
编辑index.ipnb
step 7 生成docs文档
1 |
|
生成HTML文档
step 8 上传git
1 |
|
step 9 bug
检查 commits中的问题
没有设置keywords,在settings.ini中进行设置。
optional step 10 发布pypi
上传到pypi
注册pypi
在用户家目录下新建
~/.pypirc
1
2
3[pypi]
username = your_pypi_username
password = your_pypi_passwordpip install twine
make release
附 其他事项
- 安装包,同时同步所有在源码上的编辑
1 |
|
- 可以将自己开发的包链接到python包路径下
1 |
|
- autoreload
1 |
|
- 在ipynb结尾添加以下代码,用以代替命令行nbdev_build_lib。
1 |
|
检查可读的notebook
1
nbdev_read_nbs
检查可能造成merge conficts的文件,
1
nbdev_clean_nbs
可能导致cleaned项不通过,此时用,然后再push
检查notebook和已经导出的lib files之间的是否有差异
1
nbdev_diff_nbs
运行notebooks中的测试
1
nbdev_test_nbs
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!