通过iframe使用Jupyter notebook
jupyter notebook需要进行一些设置才能被允许嵌入到网页中,正常情况下是不能直接嵌入的
目录
1 后端
2 前端
3 设置安全的IP与端口
4 避免使用token登录
5 打开指定文件的路由
6 jupyter notebook自启动
1 后端
from flask import Flask,render_templateapp = Flask(__name__)@app.route('/')
def test():return render_template('test.html')if __name__ == '__main__':app.run(host='0.0.0.0',debug=False)
2 前端
<!doctype html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport"content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title>
</head>
<body><iframe src="http://localhost:8888/tree" frameborder="1" style="width:1500px;height:800px"></iframe>
</body>
</html>
3 设置安全的IP与端口
在home下执行jupyter notebook --generate-config
之后就会在 /home/sunrise/.jupyter中生成一个jupyter_notebook_config.py
在最后一行加入 c.NotebookApp.tornado_settings = { 'headers': { 'Content-Security-Policy': "frame-ancestors http://127.0.0.1 http://127.0.0.1:5000 'self' " }}
- 其中 http://127.0.0.1:5000 是你后端的IP和端口
然后就能用了,下面网页中的报错和jupyter无关
4 避免使用token登录
这时每次访问的时候还有输入token,很麻烦,那么我们可以设置一个密码。首先找到token
这两个地方输入token
下面输入你要设置的密码,最后点下面的按钮
不保存token
第一次可以成功进入
后续进入的之后就不需要输入token了,只需要输入你设置的密码,然后再点Log in就行了
测试可以成功进入
5 打开指定文件的路由
比如说我要打开/home下的这个文件
然后正常打开一下这个文件,复制这里的地址
之后把路由换上去就可以打开了
- 这里注意如果你jupyter notebook的启动位置不同,地址也会有相应的变化
6 jupyter notebook自启动
自启动的方式不止一种,我们通常用下面的方式,打开/etc/systemd/system,创建名为jupyter.service的文件
内容如下
重启后发现访问127.0.0.1:8888可以打开了,并且是在/的路径下打开
在/的路径下打开会有一个优点,就是noteboooks后面接的是ipynb文件的绝对路径