Posts jupyter nbconvert 把ipynb文件转换成html格式遇到cdnjs无法访问的问题
Post
Cancel

jupyter nbconvert 把ipynb文件转换成html格式遇到cdnjs无法访问的问题

把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)

邀请您关注我的公众号,我将会不时地为您推送独家原创的技术内容分享。
This post is licensed under CC BY 4.0 by the author.

基于 chineseocr_lite 开发的文字打码功能

多主机docker部署kafka和zookeeper集群+kowl管理系统

Trending Tags