【问题标题】:Can a Bokeh server be run in the Jupyter extension of VS Code?Bokeh 服务器可以在 VS Code 的 Jupyter 扩展中运行吗?
【发布时间】:2021-03-23 00:57:42
【问题描述】:

我已经安装了 VS Code 和 Jupyter 扩展。我的计算机上也本地安装了 Jupyter 和 Bokeh。

VS 代码: 版本:1.51.1 提交:e5a624b788d92b8d34d1392e4c4d9789406efe8f 日期:2020-11-10T23:31:29.624Z 电子:9.3.3 铬:83.0.4103.122 Node.js:12.14.1 V8:8.3.110.13-electron.0 操作系统:Linux x64 5.4.0-56-generic

ms-toolsai.jupyter: v2020.12.411183155

jupyter 核心:4.6.3 jupyter笔记本:6.0.3 qtconsole:4.7.5 ipython:7.16.1 ipykernel:5.3.4 jupyter 客户端:6.1.6 jupyter 实验室:未安装 NB转换:5.6.1 ipywidgets:7.5.1 NB格式:5.0.7 特质:4.3.3

散景:2.1.1

我正在尝试在 VS Code 中运行一个启动 Bokeh 服务器的笔记本,然后创建一个交互式 Web 应用程序,如下例所示:

import numpy as np
from bokeh.plotting import figure
from bokeh.io import show, output_notebook

output_notebook()

def plot(doc):
    x = np.linspace(0,2*np.pi,20)
    y = np.sin(x)

    p = figure()
    h = p.line(x, y)

    doc.add_root(p)

show(plot)

当我从终端启动 Jupyter 并在网络浏览器中运行该笔记本时,一切正常。

当我在 VS Code 中使用 Jupyter 扩展并显示一个简单的散景图(使用 bokeh.io.show(bokeh.plotting.figure))时,一切正常。

这是当我在 VS Code 中使用 Jupyter 扩展并尝试使用 Bokeh 服务器(如上例中使用 bokeh.io.show(callable))时,事情失败了,我收到以下消息Webview 开发者控制台:

VM79:809 拒绝连接 'ws://localhost:33727/ws?platform=electron' 因为它违反了 以下内容安全策略指令:“default-src 'unsafe-inline' 'unsafe-eval' 数据:https:http:blob: vscode-webview-resource:"。请注意,'connect-src' 不是明确的 设置,所以 'default-src' 用作后备。 VM79:809 [散景] 失败 连接到散景服务器:无法打开 websocket VM79:808 [散景] 无法加载散景会话 vAIAgpYICYGtqkteUPnD9UbYsp0oXOzsb9lZbLUVOFk4:错误:无法打开 网络套接字

我尝试在 Jupyter 扩展设置中取消选中“为 Jupyter 使用默认配置”选项,并在 ~/.jupyter/jupyter_notebook_config.py 文件中指定以下内容安全策略:

c.NotebookApp.tornado_settings = {
    'headers': {
        'Content-Security-Policy': "default-src 'unsafe-inline' 'unsafe-eval' data: http: https: ws: wss: blob: vscode-webview-resource:; connect-src http: https: ws: wss:"
    }
}

但这出人意料地没有影响(虽然修改这些设置并在网络浏览器中运行 Jupyter 会产生预期的影响)。

我还尝试从终端启动本地 Jupyter 服务器并让 VS Code Jupyter 扩展连接到该服务器(而不是让 VS Code 自行启动 Jupyter 服务器),但这令人惊讶地也没有影响。

有没有人知道会出什么问题?有人已经实现了我尝试做的事情吗?

我已经花了几天时间试图解决这个问题,但我现在一无所知。

谢谢

【问题讨论】:

    标签: visual-studio-code jupyter-notebook bokeh vscode-extensions content-security-policy


    【解决方案1】:

    关于这个有一个recent issue on GitHub。目前尚不清楚是否可以与 VSCode 集成。 Bokeh 期望能够建立一个升级为 websocket 连接的 HTTP 连接,并且还能够执行 JS 代码,似乎 VSCode 可能会干扰这些要求。请随时将此信息添加到上面的链接问题中,因为这似乎是一个新的失败路径。

    【讨论】:

    • 是的,看起来这是同一个问题 - 坏消息,因为目前似乎没有任何方法可以解决此问题。我已按照您的建议在链接的 GitHub 问题中添加了评论。
    猜你喜欢
    • 1970-01-01
    • 2021-12-28
    • 2016-11-19
    • 2018-10-06
    • 1970-01-01
    • 2023-02-08
    • 1970-01-01
    • 2022-08-23
    • 1970-01-01
    相关资源
    最近更新 更多