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

2023-05-16

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

重磅干货,第一时间送达640?wx_fmt=jpeg

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


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 菜单是这样的:


640?wx_fmt=png


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


640?wx_fmt=png


推荐阅读:

数据结构之动态规划问题


互动主题:

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


扫码关注:


640?wx_fmt=png

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • linux登陆远程服务器的方式

    1 使用ssh设置好之后远程登录 xff1b 2 使用linux命令远程登录 xff1a 在macOS中 Linux系统同样适用 xff0c 打开终端 xff0c 输入ssh username 64 host就可以登录远程主机了 这里use
  • (计算机组成原理)Cache和主存之间的映射方式

    地址映射变换机构是将CPU送来的主存地址转换为Cache地址 由于贮存和Cache的块大小相同 xff0c 块内地址都是相对于快的起始地址的偏移量 xff08 即低位地址相同 xff09 xff0c 因此地址变换主要是主存块号与Cache块
  • 对于典型数据集,不同神经网络分类器的精确度排序

    不同神经网络分类器的精确度排序 包括如下典型数据集 xff1a MNIST CIFAR 10 CIFAR 100 STL 10 SVHN the website of the current state of the art in obje
  • CCF 202012-2 期末预测之最佳阈值 python

    CCF 202012 2 期末预测之最佳阈值 python 100 这道题对时间进行了限制 xff0c 所以要想一次遍历得出结果 xff0c 就应该思考 xff01 样例输入 安全指数011357挂科情况001111 思路详解 lt 前提
  • failed to open X11 display

    kali xff1a failed to open X11 display 在使用kali的rdeshtop进行远程桌面时 xff0c 出现了如下错误 xff1a root 64 kali span class token comment
  • python plt 画图实战

    matplotlib pyplot 画图实战 如果你想将神经网络的训练结果 xff0c 清晰地呈现出来 xff0c 不妨看看这篇文章 xff01 技术要点 xff1a 1 一张figure呈现一个横坐标对应多个纵坐标的曲线图 2 设置标题
  • 模拟退火解决TSP问题

    模拟退火解决TSP问题 模拟退火 https mp weixin qq com s src 61 11 amp timestamp 61 1633564978 amp ver 61 3359 amp signature 61 oeLMbNZ
  • Neo4j 下载安装

    Neo4j 下载安装 Windows Neo4j community 新旧版本下载 旧版本在官网上已经找不到了 xff0c 新旧版本的区别在于登录是否需要密码 Windows Neo4j community 2 0 1及2 1 0 不需要密
  • 【libuv】1.44 windows构建

    uv a 作为一个独立的工程构建的 c 工程里c符号找不到 链接不过 Build started span class token punctuation span span class token operator span class
  • SEU健康申报+离校请假

    SEU健康申报 43 离校请假 Github源码 通过对源码的学习修改 xff0c 本程序稍作调整 xff0c 将健康申报 销假和请假模块分开 xff0c 目前可用 配置 chromedriver下载方法 xff0c 将下载的chromed
  • ValueError: Please provide model inputs as a list or tuple of 2 or 3 elements: (input, target)

    ValueError Please provide model inputs as a list or tuple of 2 or 3 elements input target 报错信息 Traceback span class toke
  • tensorflow checkout 的作用

    tensorflow checkout 的作用 参考链接如下 xff1a Tensorflow保存恢复模型及微调 网络模型的保存和读取 tensorflow训练保存的模型 模型文件夹中的文件主要为以下三类 xff1a checkpoint
  • afl-fuzz多线程

    afl fuzz多线程 afl fuzz多线程 https blog csdn net lesliegail1 article details 70209351 首先 xff0c 我们阅读这篇博客对afl fuzz单机多线程进行了解 我们了
  • 将同一文件夹下的大量文件根据设定分至多组

    将同一文件夹下的大量文件根据设定分至多组 需求分析 在recon文件夹下存在大量文件 xff0c 观察文件名 xff0c 我们设计将文件按照recon 后的第一个数字进行分组 xff0c 那么最终产生的文件夹应为0 1 11 编写程序 基于
  • CCF 202206-4 光线追踪 python

    CCF 202206 4 光线追踪 python CCF官网题目 此题因为运行超时得到了30分 xff0c 仅为没思路的同学提供一些想法 xff0c 如果有改进建议欢迎评论 xff01 题目分析 首先将反射镜转换为单独的反射点 xff0c
  • AutoEncoder及Variational AutoEncoder模型

    AutoEncoder及Variational AutoEncoder模型 一 AutoEncoder概述 作为一种无监督或者自监督算法 xff0c 自编码器本质上是一种数据压缩算法 从现有情况来看 xff0c 无监督学习很有可能是一把决定
  • CCF-CSP【202303-3 LDAP】C++

    CCF CSP 202303 3 LDAP C 43 43 CCF真题网址 第一次提交结果超时 只有20分 题目思路 我的思路较为简单 xff0c 即对于每个匹配表达式 xff0c 遍历N个用户 xff0c 验证是否匹配 对于每个表达式有两
  • 2的幂次方

    2的幂次方 判断一个数是否为2的幂次方 我们可以参考如下链接 xff1a 判断一个数是否为2的N次方 借鉴文中的分析 xff0c 我认为 xff1a 其实一个数n xff0c 如果是2的幂次方数 xff0c 则n的二进制原码中一定只有一个1
  • 爬虫1000+个C程序

    爬虫1000 43 个C程序 问题场景 由于实验需要 xff0c 我需要1000 43 个elf文件 xff0c 可是网络可获取的elf文件较少 xff0c c程序较多 xff0c 所以首先下载c程序 xff0c 之后gcc编译链接生成el
  • 【libuv】定时器:uv_timer_start 的timeout和repeat 参数

    花了好几个小时验证 uv timer start 发现怎么都是错误的 现象是 repeat 作为了timeout的效果 而且repeat 代表是毫秒级别的 按照原有设计 timeout是微秒 repeat的参数并不是timeout参数 而且

随机推荐