热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

img本文转载自机器之心,禁二次转载JupyterNotebook真的是让人又爱又失望,在有的场景下它极其便利,但是在很多大模型或复杂项目上,它又无能为力。在Jupytext这个项

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

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

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

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

当然在学习Python的道路上肯定会困难,没有好的学习资料,怎么去学习呢? 学习Python中有不明白推荐加入交流群号:984137898 群里有志同道合的小伙伴,互帮互助, 群里有不错的视频学习教程和PDF!

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

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

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

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


推荐阅读
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • 利用REM实现移动端布局的高效适配技巧
    在移动设备上实现高效布局适配时,使用rem单位已成为一种流行且有效的技术。本文将分享过去一年中使用rem进行布局适配的经验和心得。rem作为一种相对单位,能够根据根元素的字体大小动态调整,从而确保不同屏幕尺寸下的布局一致性。通过合理设置根元素的字体大小,开发者可以轻松实现响应式设计,提高用户体验。此外,文章还将探讨一些常见的问题和解决方案,帮助开发者更好地掌握这一技术。 ... [详细]
  • 本文通过思维导图的形式,深入解析了大型网站技术架构的核心原理与实际案例。首先,探讨了大型网站架构的演化过程,从单体应用到分布式系统的转变,以及各阶段的关键技术和挑战。接着,详细分析了常见的大型网站架构模式,包括负载均衡、缓存机制、数据库设计等,并结合具体案例进行说明。这些内容不仅有助于理解大型网站的技术实现,还能为实际项目提供宝贵的参考。 ... [详细]
  • 本文介绍了如何在指定目录下创建 Conda 虚拟环境,并管理包的安装路径。通过使用 `conda create --prefix /home/you/yourPythonProject` 命令,用户可以在自定义路径中安装 Python 3.5 及其相关依赖,从而实现更加灵活的环境管理和资源分配。此外,文章还提供了详细的步骤和注意事项,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 非线性门控感知器算法的实现与应用分析 ... [详细]
  • 阿里巴巴终面技术挑战:如何利用 UDP 实现 TCP 功能?
    在阿里巴巴的技术面试中,技术总监曾提出一道关于如何利用 UDP 实现 TCP 功能的问题。当时回答得不够理想,因此事后进行了详细总结。通过与总监的进一步交流,了解到这是一道常见的阿里面试题。面试官的主要目的是考察应聘者对 UDP 和 TCP 在原理上的差异的理解,以及如何通过 UDP 实现类似 TCP 的可靠传输机制。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 在更换电脑后,使用 Git Bash 运行 Python 时可能会遇到找不到 Python 解释器的问题。本文详细介绍了如何在 Windows 环境下通过 Bash Shell 调用不同版本的 Python,并成功运行 SRSPlayer HTTP 服务器。具体步骤包括配置环境变量、验证 Python 版本以及启动服务器的方法。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 深入解析监督学习的核心概念与应用
    本文深入探讨了监督学习的基本原理及其广泛应用。监督学习作为机器学习的重要分支,通过利用带有标签的训练数据,能够有效构建预测模型。文章详细解析了监督学习的关键概念,如特征选择、模型评估和过拟合问题,并介绍了其在图像识别、自然语言处理等领域的实际应用。 ... [详细]
  • 在ElasticStack日志监控系统中,Logstash编码插件自5.0版本起进行了重大改进。插件被独立拆分为gem包,每个插件可以单独进行更新和维护,无需依赖Logstash的整体升级。这不仅提高了系统的灵活性和可维护性,还简化了插件的管理和部署过程。本文将详细介绍这些编码插件的功能、配置方法,并通过实际生产环境中的应用案例,展示其在日志处理和监控中的高效性和可靠性。 ... [详细]
  • 在List和Set集合中存储Object类型的数据元素 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 在安装 iOS 开发所需的 CocoaPods 时,用户可能会遇到多种问题。其中一个常见问题是,在执行 `pod setup` 命令后,系统无法连接到 GitHub 以更新 CocoaPods/Specs 仓库。这可能是由于网络连接不稳定、GitHub 服务器暂时不可用或本地配置错误等原因导致。为解决此问题,建议检查网络连接、确保 GitHub API 限制未被触发,并验证本地配置文件是否正确。 ... [详细]
author-avatar
灬猎丶豹灬_511
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有