[英]How to edit and debug a library in python?
我已经创建了一个我自己的库(包)并使用 pip install -e 作为开发安装现在,我想编辑这个库(.py)文件并在 jupyter notebook 中查看更新。 每次,我都会编辑一个库(.py)文件,然后关闭并重新打开 ipython notebook 以查看更新。 有没有简单的方法来编辑和调试 .py 包文件?
当您加载 jupyter 时,您正在初始化一个 python 内核。 这会将您的 python 锁定到您加载内核时所处的环境。
在这种情况下,您的内核在您加载 jupyter 时包含本地 egg 安装包。 不幸的是,每次更新本地包时都需要重新加载 jupyter。
@BlackBear 有一个很好的解决方案,可以在您的第一个单元格中使用 autoreload:
%load_ext autoreload
%autoreload 2
后续解决方案假定您不需要对笔记本进行更改,而只希望在对包进行更改的情况下更新输出。 我解决这个问题的一种方法是使用 jupyter nbconvert 和 shell 脚本来使用自动笔记本生成过程。 您基本上创建了一些存储在templates
文件夹中的 jupyter 模板,您将在每次更新包时自动执行这些templates
。
一个示例脚本:
rm ./templates/*.nbconvert.ipynb
rm ./*.nbconvert.ipynb
for file in "templates"/*.ipynb
do
echo $file
jupyter nbconvert --to notebook --execute $file
done
mv ./templates/*.nbconvert.ipynb .
假设您想主动调试您的包,我建议您编写测试脚本,每次都加载一个新内核。 例如:
#mytest.py
from mypackage import myfunction
expected_outputs={'some':'expected','outputs':'here'}
if myfunction(inputs)==expected_outputs:
print('Success')
else:
print('Fail')
python3 mytest.py
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.