【发布时间】: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