记录下 jupyter 集成功用。
- 装置jupyter
需求运用到 python 中得装置工具 pip,
运用 pip 需求装置 ipython(比python好用,装置下)
这儿还需求装置 phthon
1.1 先到python 官网下载 www.python.org/
下载之后双击装置,直接点下一步装置即可
装置之后装备下环境变量,Path,新建一个,指向装置的python装置途径即可
以上 python 装置完结,
翻开 CMD ,接着装置 ipython
pip install ipython
接下来就能够装置 jupyter 了,我这儿运用的是 jupyter-lab
pip install jupyterlab
装置完结之后,发动jupyter
jupyter-lab
项目能够运转,页面能够看到显式 jupyterlab 内容
这儿想要将 jupyter 经过 iframe 的方法嵌入到咱们的项目中,发现并不可行。
1.找不到jupyter 的装备文件 jupyter_notebook_config.py
履行以下指令,装备文件就出来了
jupyter-notebook --generate-config
能够修正如下装备,值就是咱们默许翻开文件的方位
## 默许翻开文件途径
c.NotebookApp.notebook_dir = 'D:论坛wxedu'
翻开装备文件,在最后边增加如下代码,处理 jupyter 不能经过 iframe 嵌入的问题
## 处理 iframe 嵌入 jupyter 页面报错问题
c.NotebookApp.tornado_settings = { 'headers': { 'Content-Security-Policy': "frame-ancestors 'self' *" } }
现在能够经过 iframe 方法嵌入 jupyter 了,但是发现需求输入 token。
在 jupyter 服务运转的时分,再翻开终端 输入
jupyter lab list
会得到如下图一样的内容
这儿就得到了咱们在网页端需求的 token 了,写在页面里面就能够了
翻开项目,jupyter 现已经过 iframe 方法集成进来了
现在需求做一件事,就是在咱们的运用中履行脚本指令 jupyter-lab 然后发动咱们的 jupyter,再嵌入到咱们的运用中,
首先需求 运用渲染进行于主进程的双向通讯功用:具体官网: www.electronjs.org/zh/docs/lat…
我的项目中:
先封装了个node 双向通讯的类办法,
这儿需求回来一个办法,需求有回来值然后去履行
然后在主进程进行注册运用
然后在 preload 预加载文件中写办法,然后调用咱们写的node 履行指令办法
然后在 render 中运用就能够了
上面没有直接在 preload 中直接运用 node 的 exec 办法,而是封装了一下,由于在 preload 中把node隔离了,用不了 node 所露出出来的功用。
进入正题:咱们做的是一个桌面运用,要把jupyter环境放到咱们的运用中,不运用 用户自己电脑上的jupyter,把jupyter 文件放到咱们的项目中。这儿需求运维给你脚本,咱们经过前端履行脚本指令,拿到jupyter履行之后启用jupyter的衔接地址就能够了,记住是带有 token 的,和运维交流好。
这儿履行脚本带了两个参数,第一个参数是发动jupyter之后翻开项目的地址,第二个参数是jupyter的装备文件地址。
上面一个办法是在js中经过通讯方法获取文件的途径地址。(懂得都懂)
本地启用electron项目,然后经过iframe的方法显式咱们的jupyter。
这儿遇到一个问题就是显现不了 jupyter,如图咱们能够看到衔接地址咱们现已拿到了,但是放在页面中无法显现。
这个时分就需求装备jupyter的装备文件,加上一条如下装备就能够了
c.ServerApp.tornado_settings = { 'headers': { 'Content-Security-Policy': "frame-ancestors * self notebooks.originqc.com.cn qcloud4test.originqc.com notebooks.originqc.com.cn"}}
本地jupyter的确让我调了很久,很崩溃,主要是不明白,可能后边再做相似的就好多了吧。
虽然问题没有很多个,但是在探索过程中也是花了不少的时间,主要是交流需求很多。再接再厉,后边处理相似的问题应该就有信心了。
等咱们的运用上架之后,我会贴出来咱们的项目地址,欢迎大家下载运用。