创建使用Jupyter笔记本愉快Python项目

nbdev是允许你开发一个Python库在库Jupyter笔记本电脑,把所有的代码,测试和文档中的一个地方。那就是:你现在有一个真正的文学编程环境,如在1983年设想的高德纳回来了!

nbdev使调试和重构代码相对要容易得多传统的编程环境。此外,使用nbdev促进软件工程最佳实践,因为测试和文档都是一等公民。

Nbdev的特点

nbdev为开发人员提供了以下工具:

  • 自动生成文档从Jupyter笔记本电脑。这些文档是搜索和通过自检你在反引号包围的关键字自动超链接到相应的文档页面。
  • 实用程序自动化的PyPI和畅达包发布包括版本号管理。
  • 一个强大的,笔记本电脑和源代码之间的双向同步,它允许您如果需要使用IDE代码导航或快速编辑。
  • 上隐藏/显示单元精细的控制:您可以选择隐藏整个细胞,只是输出,或只是输入。此外,您还可以嵌入细胞是在默认情况下打开或关闭可折叠元素。
  • 能够直接写在测试笔记本电脑无需学习特殊的API。这些测试得到并联一个CLI命令来执行。你甚至可以定义的测试,这样你就不必总是运行长时间运行的测试某些群体。
  • 工具合并/解决冲突在一个笔记本电脑人类可读的格式
  • 持续集成(CI)来设置为你GitHub的操作开箱即用,会为你自动运行测试。即使你不熟悉CI或GitHub的操作,这将启动马上为你工作,无需任何人工干预。
  • 集成通过GitHub的网页托管文档:nbdev让您轻松承载您的文档免费使用GitHub的页面。
  • 创建Python模块,以下最佳实践,比如自动定义__所有__更多细节)与您的导出函数,类和变量。
  • 数学方程式支持乳胶。
  • ... 以及更多!查看入门下面一节以获取更多信息。

一种激励实施例

例如,让我们定义表示纸牌,在一个Jupyter笔记本电脑相关文档和测试类:

image.png

在上面的截图中,我们有一些代码,测试和文档中的一个方面!nbdev呈现为可检索的文档(其任选地被免费托管在GitHub页)。下面是进一步说明所生成的文档的带注释截图:

image.png

上述说明是的一个子集本nbdev教程以最小的例子,其使用代码从认为Python 2艾伦唐尼。

注释说明:

  1. 航向对应于第一H1在笔记本上用一记块标题API详细作为总结。
  2. nbdev自动呈现的内容为你的表。
  3. nbdev自动呈现你的类或函数作为标题的签名。
  4. 在您的代码定义的细胞将被隐藏,并通过你的函数的标准化文件,显示出其名称,参数,文档字符串,并链接到GitHub上的源代码代替。
  5. 文档的这部分从文档字符串自动呈现。
  6. 笔记本电脑的其余部分呈现如常。可以隐藏整个细胞,隐藏仅通过使用所述细胞输入或隐藏仅输出标志此页描述
  7. nbdev支持渲染,如文档中彩色框特殊块报价。你可以阅读更多关于他们这里。在这个具体的例子中,我们使用的是注意块引用。
  8. 你在反引号包围的话会被自动超链接到相关的文档,在适当情况下。这是一个微不足道的情况下类的定义正上方,但是这个工程跨页和模块。我们将看到在后面的步骤的另一个例子。

安装

nbdev是PyPI上的和畅达,所以你可以运行PIP安装nbdev要么康达安装-c fastai nbdev

编辑安装,使用以下命令:

混帐克隆https://github.com/fastai/nbdev PIP安装-e nbdev

注意nbdev必须安装到相同的Python环境中,您使用为您的Jupyter服务器和您的工作空间。

入门

以下是入门nbdev有用的资源:

如果有人告诉你,你就不应该使用笔记本电脑的软件开发

看这个视频

特约

如果您想参与nbdev,一定要审查贡献准则。该项目遵循fastai`s行为守则。通过参与,我们希望你坚持这个代码。在一般情况下,fastai项目致力于在开源软件开发公认的最佳实践遵守。

请确保您有我们使用运行安装git的钩

nbdev_install_git_hooks

在克隆库中的文件夹。

版权所有2019年起,fast.ai公司的Apache许可,2.0版(“许可”);你可能不使用这个项目的文件,只有在符合许可。许可证的副本,在这个仓库许可文件提供。

附录

nbdev和fastai

nbdev已被用来建立许多开发商,如使用创新的软件fastai,深学习库,实现了独特的分层API和回调系统fastcore,延伸到Python编程语言。此外,nbdev允许开发者一个非常小的数目,以保持和发展一个大生态系统软件工程,数据科学,机器学习和DEVOPS工具。

这里,例如,是怎么combined_cos被定义,并在记录fastai图书馆:

从nbdev导出
在一个小区中(标有出口标志)和定义的函数的一个例子说明的那样,与视觉例如沿着,在下面的细胞