把ipynb文件转换为html文件,主要有三种方式:
- 通过菜单:文件 > 下载 > 下载为HTML
- 通过命令行:
jupyter nbconvert --to=html notebook.ipynb
- 通过python代码调用nbconvert相关功能输出html文件
通过菜单下载为HTML的方式还未找到解决办法
命令行调用的时候可以自定义nbconvert配置文件的方式,修改js文件的地址
创建配置文件的命令
1
jupyter nbconvert --generate-config
配置文件默认保存在 ~/.jupyter/jupyter_nbconvert_config.py
如果不确定什么位置可以通过 jupyter --paths
查看jupyter有关的路径 修改配置文件 vi ~/.jupyter/jupyter_nbconvert_config.py
加入如下自定义内容
1
2
3
4
c = get_config()
c.HTMLExporter.jquery_url = 'https://自托管域名/jquery.min.js'
c.HTMLExporter.require_js_url = 'https://自托管域名/require.min.js'
c.HTMLExporter.mathjax_url = 'https://自托管域名/MathJax-2.7.7/MathJax.js'
其他配置参数请参考官方文档
修改之后再通过 jupyter nbconvert --to=html notebook.ipynb
导出html文件,里面的几个js会自动替换成修改后的js地址
通过python代码调用nbconvert相关功能输出html文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from traitlets.config import Config
import nbformat
from nbconvert import HTMLExporter
# 需要转换的ipynb文件路径
nbname = '/path/notebook.ipynb'
# 也获取当前ipynb文件的文件名
# nbname = ipynbname.name()+'.ipynb'
c = Config()
# 设置js文件地址
c.HTMLExporter.jquery_url = 'https://自托管域名/jquery.min.js'
c.HTMLExporter.require_js_url = 'https://自托管域名/require.min.js'
c.HTMLExporter.mathjax_url = 'https://自托管域名/MathJax-2.7.7/MathJax.js'
html_exporter = HTMLExporter(config=c)
my_notebook = nbformat.read(nbname, as_version=4)
# 得到转换后的html内容
(body, resources) = html_exporter.from_notebook_node(my_notebook)
# 如果有用到plotly图表等功能,也可以通过简单的代码替换方式修改,其他js文件也可以用类似方式解决
body = body.replace('https://cdn.plot.ly/plotly-2.4.2.min.js', 'https://自托管域名/plotly-2.4.2.min.js')
body = body.replace('require(["plotly"]', 'require(["/static/js/plotly-2.4.2.min.js"]')
# 保存html文件
with open('notebook.html', 'w') as f:
f.write(body)