ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

nteract 交互式计算套件:Electron 桌面笔记本应用与核心 SDK 的架构与使用指南

nteract 交互式计算套件:Electron 桌面笔记本应用与核心 SDK 的架构与使用指南 开发工具数据科学【免费下载链接】archived-desktop-appThe old electron based nteract notebook项目地址https://gitcode.com/gh_mirrors/nt/archived-desktop-app点击查看免费下载导读本文围绕 nteract 开源组织的主仓库展开系统梳理这个 monorepo 的组成基于 Electron 的跨平台桌面笔记本应用、可接入 Jupyter 服务器生态的扩展以及用于构建自定义交互式计算界面的核心 SDK 包。读者读完本文后将掌握 nteract 桌面应用的功能边界与启动方式、内核发现与配置机制、nteract.json的完整配置项以及如何基于核心 SDK 包在自有项目中复用 Jupyter 消息协议与笔记本渲染能力。nteract 是什么nteract 是一个开源组织致力于创造出色的交互式计算体验让协作变得更加容易。它构建 SDK、应用程序和库帮助个人与团队充分利用交互式尤其是 Jupyter笔记本与 REPL。本仓库即 nteract 的主仓库采用monorepo多包仓库结构同时包含nteract 核心 SDK 的源代码nteract 桌面应用与 Web 应用的源代码SDK 与各应用的配套文档。从应用形态看nteract 桌面版是一个读写型编码环境literate coding environment支持 Python、R、JavaScript 以及其他 Jupyter 内核。它把 Web 版 Jupyter Notebook 的最佳体验封装成桌面应用让你能在系统上原生打开笔记本双击桌面的.ipynb文件即可启动macOS 上甚至可以直接使用 Spotlight 唤起。仓库整体结构monorepo 布局速览主 README 对仓库目录给出了清晰的定位表这里是完整的目录职责说明目录说明applications/desktopnteract 桌面应用的源代码基于 Electron 构建的跨平台应用applications/jupyter-extensionnteract 的 Jupyter 扩展可安装到 Jupyter classic 与 JupyterLab 的部署环境中也可用于个人 Jupyter 服务器packages属于 nteract 核心 SDK 的 JavaScript 包由 Lerna 管理changelogsnteract 核心 SDK 与各应用每次发布的变更日志桌面应用基于 Electron 的笔记本前端应用定位与功能范围桌面应用是仓库中的核心可执行产物其package.json中名为nteract版本 0.29.1描述为Interactive literate coding notebook!。在 applications/desktop/README.md 中项目对自身范围与目标有明确说明提供笔记本环境用于探索与完成任务独立的跨平台桌面应用一个窗口对应一本笔记本文档/叙事通过Jupyter 消息规范 v5与任意 Jupyter 内核协作预配置 Python3 运行时未达成与 JavaScript 运行时已达成培育工具生态让其他人可以基于 Jupyter 规范构建自己的平台。值得注意的事实是桌面应用内置了一个 JavaScript 内核。在 kernel-specs.ts 中kernelSpecs$会在系统已发现内核的基础上额外注入名为node_nteract的内核规范其argv指向ijavascript包的kernel.js并通过ELECTRON_RUN_AS_NODE1环境变量让 Electron 以 Node.js 模式运行内核进程。这正是 README 中Easy install with pre-configured … JavaScript runtimes目标的实现方式。Electron 主进程与渲染进程的代码划分从 src/README.md 可以看到nteract 是运行在桌面的 Electron 应用代码明确划分为两条线程main/—— 主线程与所有笔记本窗口的启动引导代码原生 macOS 菜单、对话框等 GUI 模块只在主进程可用notebook/—— 面向单个窗口的全部笔记本 UI 逻辑。这种划分对应 Electron 的主进程main process与渲染进程renderer process模型是理解 nteract 桌面版架构的起点。启动流程与命令行参数桌面应用的主进程入口是 src/main/index.ts它用yargs解析命令行参数Usage: nteract notebooks [options]nteract notebook1.ipynb notebook2.ipynb—— 打开多个笔记本nteract --kernel javascript别名-k—— 指定启动内核-v/--version、-h/--help、--verbose—— 版本、帮助与调试信息输出。启动时凡是参数中匹配/.ipynb$/的文件都会进入待打开列表如果既没有传入笔记本文件、也没有 macOS 的 open-file 事件则根据内核选择逻辑自动新建一个笔记本窗口。内核选择由bestKernelObservable(requested, fallback)实现优先使用命令行--kernel指定的内核其次使用配置项defaultKernel默认python3若两者都不可用则取内核规范列表排序后的第一个。启动过程中的关键细节对应 src/main/index.ts 的代码通过setConfigFile将配置文件指向~/.jupyter/nteract.json先显示 splash 窗口待内核规范就绪、渲染进程发出react-ready事件后再关闭macOS 在 app ready 之前发来的open-file事件会被缓冲待就绪后统一处理使用prepareEnv见 prepare-env.ts从当前 shell 会话拉取用户环境变量确保 macOS 的 launchctl 与 Windows 进程管理器能拿到正确的 PATH 等变量——这正是从 CLI 启动与从 Dock/开始菜单启动行为一致的底层保障。每个笔记本窗口由 launch.ts 中的launch()创建默认窗口尺寸 800×1000加载static/index.html并把打开的笔记本文件名通过main:load传给渲染进程。launchNewNotebook()则通过main:new携带文件路径与内核规范创建新笔记本。内核规范发现内核支持依赖kernelspecs.findAll()kernelspecsnpm 包它会扫描系统与用户目录下的 Jupyter 内核规范kernel spec。发现的规范会通过SET_KERNELSPECSaction 写入 Redux store供渲染进程查询。这也是与任意 Jupyter 内核协作的机制基础只要你的系统上安装了 Jupyter 内核Python、R、Julia 等nteract 桌面版就能发现并启动它。桌面应用的配置nteract.json桌面应用使用基于 JSON 的nteract.json文件保存配置位置在 Jupyter 配置目录中。可通过jupyter --paths查看该目录$ jupyter --paths /Users/me/.jupyter /usr/local/etc/jupyter /etc/jupyter创建配置文件$ touch /Users/me/.jupyter/nteract.json可配置项一览配置项示例说明themetheme: dark设置桌面应用默认主题取值为light默认或darkautoSaveIntervalautoSaveInterval: 1000笔记本文档自动保存的间隔毫秒设为0则禁用自动保存codeMirrorcodeMirror: { lineNumbers: true }配置 CodeMirror 编辑器的一组选项示例配置设置默认主题为深色并禁用自动保存{ theme: dark, autoSaveInterval: 0 }自定义 CodeMirror 编辑器行为{ codeMirror: { matchBrackets: true, autoCloseBrackets: 4, cursorBlinkRate: 500 } }从源码看配置体系的延伸除了上述三个核心配置项主进程还通过nteract/mythic-configuration的defineConfigOption声明了更多配置选项见 config-options.tsdefaultKernel—— 启动时的默认内核取值来自kernelspecs默认python3keyboardShortcuts—— 自定义键盘快捷键默认空对象。渲染进程启动时通过transfer-config-options-to-mainIPC 消息把前端声明的配置选项同步给主进程再由主进程统一写入~/.jupyter/nteract.json。这说明整个配置体系是渲染进程声明 → 主进程持久化的双向机制。Jupyter 扩展nteract on jupyter除桌面应用外仓库还提供了浏览器端的 Jupyter 扩展。根据 applications/jupyter-extension/README.md通过 pip 安装pip install nteract_on_jupyter使用运行jupyter nteract即在 Jupyter 服务器中启动 nteract 界面。其前端是 TypeScript/React 应用applications/jupyter-extension/nteract_on_jupyter/通过setup.py、pyproject.toml与webpack.config.js组织 Python 与 JS 两套构建产物。开发模式下的部署配置在 Jupyter 服务器上运行时存在一个新的NteractConfig配置用于控制资源加载配置项说明asset_url从何处加载 nteract 的 JS 资源ga_codeGoogle Analytics 代码用于跟踪使用情况示例jupyter nteract --NteractConfig.asset_urlhttp://localhost:8080/ --NteractConfig.ga_codeGA-SOME-NUMBERS开发时推荐用jupyter nteract --dev同时拉起 webpack 热更新服务器与 Jupyter 服务器或分别执行lerna run hot --scope nteract-on-jupyter --stream与带--NteractConfig.asset_url的jupyter nteract命令。核心 SDK用 packages 构建自己的交互式计算应用nteract-packages 目录Lerna 管理的包集合中沉淀了大量可复用模块构成让其他人基于 Jupyter 规范构建自己的平台的生态目标packages/messaging —— Jupyter 消息协议的类型与编码wire protocolpackages/commutable —— 笔记本文档不可变数据结构支持 nbformat v3/v4 解析packages/epics —— 基于 RxJS 的副作用编排覆盖内核生命周期、执行、内容管理等packages/rx-jupyter —— 以 RxJS Observable 风格封装 Jupyter HTTP APIcontents、kernels、sessions、terminalspackages/stateful-components 与 packages/presentational-components —— React 笔记本 UI 组件层packages/editor 与 packages/monaco-editor —— CodeMirror 与 Monaco 编辑器封装packages/mythic-* 系列 —— 基于myths架构的状态与副作用管理包桌面应用的配置、窗口管理、通知、多选等能力均由此实现。值得一提的是部分包已从 monorepo 移出独立维护如ansi-to-react、enchannel-zmq-backend、nteract/outputs等见 packages/README.md因此在核心 SDK 中enchannel-zmq-backend仍作为依赖出现在桌面应用的package.json中负责 ZMQ 传输层的 Jupyter 内核通信。从源码结构可以推断核心 SDK 的分层是传输层enchannel/messaging→ 数据层commutable/rx-jupyter→ 状态层reducers/selectors/mythic→ 组件层presentational/stateful components这与 README 中基于 Jupyter 规范构建自有平台的定位一致。构建与打包桌面应用开发运行在 applications/desktop/package.json 的 scripts 中可以找到完整的开发命令npm run dev即start—— 先构建再以开发模式启动 Electroncross-env NODE_ENVdevelopment electron .npm run spawn:debug—— 带调试日志启动cross-env DEBUGtrue ELECTRON_ENABLE_LOGGING1 NODE_ENVdevelopment electron .npm run build—— 使用webpack.dev.js构建产物为lib/下的webpacked-main.js。需要说明的是构建产物依赖各 SDK 包nteract/*已安装并链接仓库根目录通过yarn Lerna 管理依赖因此完整开发流程需先在仓库根执行yarn安装 monorepo 依赖。发布打包package.json中内置了基于 electron-builder 的发布配置要点包括appId: io.nteract.nteractproductName: nteract文件关联.ipynb扩展名关联到应用macOS 目标dmgzip含 hardened runtime 与 notarize 步骤Windows 目标nsiszipLinux 目标deb、AppImage、tar.gz并声明了桌面文件Desktop Entry的 MimeTypeapplication/x-ipynbjson与分类Science;Development;。打包命令npm run pack—— 清理后按生产配置构建并生成未压缩目录electron-builder --dirnpm run dist—— 生成安装包electron-builder -p never不上传npm run dist:all—— 为 mac/linux/windows 全平台构建-mlw。Linux 打包的更多细节.deb目录布局、lintian校验、AppImage 相关的APPIMAGE env警告、依赖安装等可参考 applications/desktop/PACKAGING-NOTES.md。用户如何上手桌面应用前往 nteract 官网下载对应操作系统的安装包Linux 用户也可通过 Snap Store 安装snapcraft.io/nteract。安装后双击.ipynb文件即可打开笔记本也可在命令行直接执行nteract notebook.ipynb启动。开发者若想基于 nteract 构建自己的笔记本应用可以从核心 SDK 的文档docs 目录下各包的docs/overview.md、docs/examples.md等与 docs/index.md 开始按需选用组件包与状态管理包。总结nteract 主仓库是一个典型的应用 SDK混合 monorepo桌面应用Electron与 Jupyter 扩展直接面向最终用户核心 SDK 则面向开发者开放。理解它的关键在于抓住两条主线——应用侧的主进程/渲染进程划分 内核规范发现 nteract.json 配置以及SDK 侧的消息协议 → 数据模型 → 状态管理 → React 组件分层。无论你是想直接使用笔记本工具还是基于 Jupyter 规范构建自有交互式计算产品本文梳理的目录定位与源码证据都能作为后续深入探索的入口。赞分享开发工具数据科学【免费下载链接】archived-desktop-appThe old electron based nteract notebook项目地址https://gitcode.com/gh_mirrors/nt/archived-desktop-app点击查看免费下载相关推荐如何用Popular-RL-Algorithms快速上手SAC与TD3初学者必备教程如何用Popular RL Algorithms快速上手SAC与TD3初学者必备教程 Popular RL Algorithms是一个基于PyTorch实现的强化学习人工智能机器学习Jan项目完全解析这款免费开源的离线ChatGPT替代品为何值得你立刻关注Jan项目完全解析这款免费开源的离线ChatGPT替代品为何值得你立刻关注 Jan 是一款 免费开源 、可 100% 离线运行 的 ChatGPT 替代品它人工智能AI 应用大模型本地部署桌面应用交互助手AI Agentnteract革命性的交互式计算套件全面解析nteract革命性的交互式计算套件全面解析 nteract是一个革命性的开源交互式计算套件致力于为开发者和数据科学家提供卓越的交互式计算体验。作为现代化的开发工具数据科学上一篇终极 Laravel Generator 常见问题解决方案快速解决8大开发痛点下一篇Laravel Passport 常见问题解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表