点击“小詹学Python”,选择“置顶”公众号

重磅干货,第一时间送达

本文转载自机器之心,禁二次转载

Jupyter Notebook 真的是让人又爱又失望,在有的场景下它极其便利,但是在很多大模型或复杂项目上,它又无能为力。在 Jupytext 这个项目中,作者希望既能利用 Notebook 的可视化优势,同时也能利用纯文本编写优势。可以说,是时候联合 Jupyter Notebook 与 PyCharm 了。

  • Jupytext 项目地址:https://github.com/mwouts/jupytext

Jupyter Notebook 哪不行?

Jupyter Notebook 是一款免费、开源的交互式 web 工具。研究人员可以利用该工具将软件代码、计算输出、解释文本和多媒体资源组合在一个文档中。笔记本形式的计算已经发展了几十年,但是过去几年里,Jupyter 特别受欢迎,更是成为数据科学家和机器学习研究者们的首选工具。

在 GitHub 的一项分析中(Nature,30 OCTOBER 2018)显示,截至 2018 年 9 月,公开的 Jupyter Notebook 已经超过了 250 万份,而 2015 年这一数字仅为 20 万左右。Jupyter Notebook 之所以这么流行,主要还是它的演示和可视化,我们可以查看每一段代码的输出与运行效果。

这种可视化对于数据科学和机器学习研究而言非常重要,因为我们需要当前的模型特性做决策。此外,正因为这种直观的可视化输出,我们经常使用它作为模型教程,Colab 这种提供免费 GPU 算力的平台也都采用的是 Jupyter Notebook。

因此总的而言,Jupyter 的主要特点是:

  • 行内代码执行

  • 简单的构思结构

  • 对图片和数据帧的良好展示

但是,Jupyter Notebook 也有不好的地方,我们很难用它做版本控制,也很难用于工程实践。其中比较重要的是版本控制,Jupyter Notebook 采用的是 JSON 结构,可读性比较差。而版本控制能让我们发觉潜在的优秀代码,我们可以关注代码的变化而挖掘到底哪些是重要的。

直到现在,版本控制和 Jupyter Notebook 都是两个世界的人,它们之间基本没有啥关系。虽然也有一些工作尝试结合两者,但成果非常有限,对开发者的使用而言也不友好。

Jupytext 来啦

现在,Jupytext 来啦,我们可以把 Jupyter Notebook 代码转化成纯文本,用我们最喜欢的 IDE 打开。重要的是,Jupytext 能清楚地查看代码的修改记录,从而更好地进行版本控制,这是以前 Jupyter Notebook 所做不到的。这样的 Jupytext 是不是就是你苦苦追寻的工具?

在上面的视频中,项目作者展示了如何快速使用 Jupytext,我们可以使用最喜欢的纯文本编辑器或 IDE 来编辑 Jupyter Notebook。这样子,Jupyter Notebook 也能有快飞一般的编写速度了,因为不论是代码导航、编辑或执行代码单元、debug 代码等等,IDE 都要便捷一些。

当然,如果要使用其它 IDE,Jupyter Notebook 的格式还是要转换的。目前 Jupytext 能将 Jupyter Notebook 转换为一下一些格式:

  • Markdown 和 R Markdown 文档

  • Julia、Python、R、Bash、Scheme、Clojure、Matlab、Octave、C++ 和 q/kdb+ 脚本

如果我们将 Jupyter Notebook 保存为 Python 脚本,那么就可以将 Python 文件导入 Git 仓库,并追踪代码的修改和变化。有意思的是,Python 代码的修改是在 Jupyter Notebook 中完成的,这在以前是无法直接追踪的。

更有意思的是,如果我们需要使用 IDE 重构代码或其它操作,那么可以直接在 PyCharm 中编辑并保存 Python 文件。在刷新 Notebook 后,我们可以继续在 Jupyter 上便捷更新后的代码。相当于,Jupyter 和 PyCharm 联合便捷了~

Jupytext 使用姿势

Jupytext 的安装非常简单,用 pip 或 conda 直接安装就行了。此外,我们有多种方式使用 Jupytext,以下简要展示了几种方式以及使用界面。

直接在 Jupyter Notebook 或 JupyterLab 中使用:Jupytext 提供内容管理器,允许 Jupyter 将 notebook 保存为你喜欢的格式,来补充或替代传统的.ipynb 文件。你可以在自己喜欢的编辑器中边界文本表示。编辑完成后,在 Jupyter 中刷新 notebook 即可:输入单元加载自文本文件,输出单元重新加载自.ipynb 文件。「刷新」这个动作会保存内核变量,这样你就可以无需重新运行 notebook,在 notebook 中继续工作、运行修改后的单元。

在命令行中使用:Jupytext 将 Jupyter notebook 转换为文本表示。命令行工具可以多种方式在 notebook 上运行。它可以同步处理 notebook 的多个表示,将 notebook 输送至 black 等重新格式化工具中。如果你想在提交.ipynb 文件时自动更新文本表示,它还可以作为 pre-commit hook 使用。

在 Vim 中使用:编辑你的 Jupyter notebook,使用 jupytext.vim 将其表示为 Markdown 文档或 Python 脚本。

Jupyter Notebook 中的 Jupytext 菜单是这样的:

在 JupyterLab 中以 Notebook 形式打开 MarkDown 脚本是这个样子的:

推荐阅读:

数据结构之动态规划问题

互动主题:

分享一下你使用的编辑器及原因!

扫码关注:

Jupyter与PyCharm不可兼得?Jupytext就是你需要的!相关推荐

  1. 太棒了!Jupyter 与 PyCharm 完美融合,Jupytext 来啦!

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 项目作者 | Marc Wouts 转自 | 机器之心 Jupyte ...

  2. 优秀!Jupyter 与 PyCharm 可以完美融合!

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:机器之心 AI博士笔记系列推荐 周志华<机器学习>手推笔记正式开源!可打印版本附pdf下载链接 J ...

  3. jupyter和spider;Anaconda、Python、Jupyter、Pycharm、Spyder、conda、pip

    转自https://www.jianshu.com/p/97fa4ed3edbc.自学使用,侵删. Anaconda安装后,可以从菜单中看到它包含几个应用程序,其中Anaconda Navigator ...

  4. Python环境的安装(Anaconda+Jupyter notebook+Pycharm)

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文总结了Windows下Python环境的安装,包括Anacon ...

  5. win10x64下安装anaconda、配置tensorflow并在jupyter和pycharm中使用tf

    文章目录 1 CUDA和cuDNN环境配置 1.1 查看电脑的显卡类型 1.2 CUDA安装 1.3 cuDNN的设置 1.4 环境变量配置 2 anaconda的安装 3 配置TensorFlow环 ...

  6. win10+1050显卡+cuda9.0+cudnn7.6.5+pytorch1.1.0+py3.7(conda)安装+jupyter运行+pycharm运行(conda环境)

    win10+1050显卡+cuda9.0+cudnn7.5+pytorch1.1.0安装 参考网址 安装cuda9.0 检查GPU显卡支持的cuda版本 linux下查看cuda版本 windows版 ...

  7. 干货 | 仅需10分钟,开启你的机器学习之路!

    点击"小詹学Python",选择"置顶"公众号 重磅干货,第一时间送达 本文转载自机器之心,禁二次转载 机器学习之路虽漫漫无垠,但莘莘学子依然纷纷投入到机器学习 ...

  8. 收藏、学习一气呵成,2019年机器之心干货教程都在这里了

    机器之心整理 参与:张倩.蛋酱 从 2016 年起,机器之心每年都会盘点全年的精华教程.去年就有小伙伴留言说要在 2019 年上半年把 2018 年的教程合集「啃下来」.现在都 2020 了,不知道这 ...

  9. 收藏、点赞、退出一气呵成,2019年机器学习干货教程都在这里了

    机器之心整理 参与:张倩.蛋酱 从 2016 年起,机器之心每年都会盘点全年的精华教程.去年就有小伙伴留言说要在 2019 年上半年把 2018 年的教程合集「啃下来」.现在都 2020 了,不知道这 ...

最新文章

  1. php图片加边框,php在图片上增加矩形框并加入水印
  2. 做项目需要使用的工具类
  3. stm32 usb 虚拟串口 相同_RTThread STM32 虚拟串口代码级移植
  4. oracle数据库 spring,oracle spring 连接数据库 报错
  5. android 自定义控件的宽高_巧用Handler获取View控件信息
  6. Java 中判断一个字符串是否包含另外一个字符串的方法
  7. rabbitmq之window环境启动
  8. 【PS CS6】替换证件照背景色
  9. 涡旋电磁波:无线通信的革命
  10. 统计学习导论之R语言应用(二):R语言基础
  11. Android自定义组件之日历控件-精美日历实现(内容、样式可扩展)
  12. Git实用技巧36招
  13. 存在为退还的延长失保金支付记录,需退还后才能就业登记
  14. 计算机科学计算的方面,计算机的科学计算功能在工程领域中的应用.doc
  15. u盘安装linux卡logo,安装Ubuntu16.04卡在logo界面
  16. R语言中类别为‘closure‘的对象不可以取子集(Error:object of type ‘closure‘ is not subsettable)
  17. 下载Stani‘s Python Editor
  18. 中断服务程序编写规则
  19. HTML5 Notification桌面提醒功能
  20. 畅谈中控矩阵视屏监控系统

热门文章

  1. ELK学习5_ELK文档资料:《ELK stack 权威指南/饶琛琳》推荐
  2. tp的echo输出字符串后换行
  3. 两个html文件互相访问变量,访问一个js文件的变量上的HTML文件
  4. ob服务器维修视频,【转】科普贴骗经验~,可ob全球各服务器玩家比赛的网站
  5. linux常规检查命令,linux学习-常规命令使用5
  6. strtotime()加半个小时_炖羊肉,必须加这4种料,缺一味就不香!很多人做错,难怪不好吃...
  7. apache shiro 如何升级_Shiro登录认证
  8. android实现录像功能吗,Android实现录屏直播(一)ScreenRecorder的简单分析
  9. php比较float大小,PHP中两个float(浮点数)比较实例分析
  10. apache服务器配置tls_Apache服务器配置https