ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Polynote——编程笔记本环境

2019-11-11 15:01:58  阅读:272  来源: 互联网

标签:笔记本 language text 代码 编程 cell Polynote 单元格 metadata


Polynote

Polynote,是一个编程笔记本环境(programming notebook),由网飞(Netflix)开源。

编程笔记本(代码笔记本),如python中的jupyter notebook,是若干代码笔记的集合。代码笔记即是一些片段。

编程笔记本环境,是提供代码笔记编辑和存储、执行、结果显示和存储的编程环境。在代码笔记本环境中,代码笔记被放在“单元格”内,一个单元格即对应一个笔记。代码笔记本环境一般提供存储最近一次运行结果的功能。

Polynote的服务端是基于scala的,与用户的交互通过Web实现(如网页浏览器)。

优点:

  • 支持多种语言/环境(scala, python, spark)
  • 支持多语言代码的混合
  • 代码自动补全
  • 富文本
  • 支持LaTex数学公式
  • 跟踪代码执行任务
  • 实时高亮正在执行的代码片段
  • 数据可视化

符号表

当前代码可用的符号(变量)是位置在当前代码之前的单元格中的符号。而其他有的笔记本环境会将所有符号视为全局量,其使得任一单元格可使用所有单元格中的符号。

(raw content of notebook)

{
  "metadata" : {
    "config" : {
      "dependencies" : {
        
      },
      "exclusions" : [
      ],
      "repositories" : [
      ],
      "sparkConfig" : {
        
      }
    }
  },
  "nbformat" : 4,
  "nbformat_minor" : 0,
  "cells" : [
    {
      "cell_type" : "markdown",
      "execution_count" : 0,
      "metadata" : {
        "language" : "text"
      },
      "language" : "text",
      "source" : [
        "# Title Here<br>\n",
        "\n",
        "\n",
        "text cell,* **supporting*** rich** *text* , and latex equations, like  $\\bm A=\\bm U \\bm\\Sigma \\bm V^T$.<br>\n",
        "\n",
        "\n"
      ],
      "outputs" : [
      ]
    },
    {
      "cell_type" : "code",
      "execution_count" : 1,
      "metadata" : {
        "cell.metadata.exec_info" : {
          "startTs" : 1573438795595,
          "endTs" : 1573438795820
        },
        "language" : "scala"
      },
      "language" : "scala",
      "source" : [
        "println(\"hello world from polynote in scala\")\n",
        "val x = 100\n"
      ],
      "outputs" : [
        {
          "name" : "stdout",
          "text" : [
            "hello world from polynote in scala",
            "\n"
          ],
          "output_type" : "stream"
        }
      ]
    },
    {
      "cell_type" : "code",
      "execution_count" : 2,
      "metadata" : {
        "cell.metadata.exec_info" : {
          "startTs" : 1573438892501,
          "endTs" : 1573438892670
        },
        "language" : "python"
      },
      "language" : "python",
      "source" : [
        "print('hello world in python')\n",
        "y = x / 2\n",
        "print(f'y: {y}')\n"
      ],
      "outputs" : [
        {
          "name" : "stdout",
          "text" : [
            "hello world in python",
            "\n",
            "y: 50.0",
            "\n"
          ],
          "output_type" : "stream"
        }
      ]
    },
    {
      "cell_type" : "code",
      "execution_count" : 3,
      "metadata" : {
        "language" : "sql"
      },
      "language" : "sql",
      "source" : [
        "SELECT * from my_sample_table;"
      ],
      "outputs" : [
      ]
    },
    {
      "cell_type" : "markdown",
      "execution_count" : 4,
      "metadata" : {
        "language" : "text"
      },
      "language" : "text",
      "source" : [
        "# Another Text\n",
        "\n",
        "<div>Actually, text cell is backed end by <i>markdown</i>.<br></div>"
      ],
      "outputs" : [
      ]
    }
  ]
}

客户端界面

主界面布局:
界面布局

(受限于图片编辑工具内的输入法无法切换为中文,图片中的注释以英文书写)

工具条中的“Cell”部分有下拉框可选择活跃单元格的内容类型(Text, Scala, Python等),单元格区域内的顶部也提供了设置类型的下拉框,不过,这里的下拉框仅在单元格是代码类型(Scala、Python等)才会显示,如果要在文本(Text)和代码(Scala, Python等)类型间变换时则只能用工具条中的下拉框。

笔记本配置项和依赖包(Configuration & Dependencies):

部署

下载
下载最新程序包后解压。

tar -xzvf polynote-dist.tar.gz

Python支持:需要安装python3, pip3,然后利用pip3命令安装依赖包:

pip3 install jep jedi pyspark virtualenv

Spark支持:……

配置:文件config.yml(不存在则手动创建),程序包中附带了一个配置模板,文件名config-template.yml

启动

./polynote

默认在地址 http://127.0.0.1:8192 提供客户端服务。
笔记数据默认存储在安装目录下的notebooks目录。

注意,Polynote暂无安全机制(版本 0.2)。

标签:笔记本,language,text,代码,编程,cell,Polynote,单元格,metadata
来源: https://www.cnblogs.com/xmaples/p/11834888.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有