自己制作本地的Jupyter Book

前面一文记录:筛选写书工具的艰苦经历简要记录的自己尝试几种工具的艰苦努力,最后的结论是"Word + Calibre" 制造常用的电子书(DOCX, PDF, EPUB,MOBI和azw3等)还是够用的。不过,还是觉得要写一本使用Python 完成编程的书(近期的计划是商务视角下的数据分析,和高性能计算)​,能够编纂配套的代码展示也是有必要的,所以,又了解了下使用Jupyter NoteBook 编写Python 代码书的技巧,汇总于此。

关于 Jupyter Notebook

Jupyter notebook 由 Fernando Perez 在 2001 发起。它的目标是提供 "Tools for the entire life cycle of research computing." 如果说 Python 是数据科学操作的引擎,那么 IPython 就是交互式的控制面板。

The guy at left is Fernando Perez
  • IPython 只是为 NumPy、Scipy、Pandas、Matplotlib 等包提供一个交互式接口。其本身并不提供科学计算的功能。这些工具组合在一起,形成了可以匹敌如 Matlab、Mathmatic 这些复杂工具的科学计算框架。
  • IPython 是一种交互式 shell,与普通的 Python shell 相似,但具有一些很好的功能(例如语法高亮显示和代码补全)。notebook 的工作方式是:你通过浏览器连接到该服务器,而 notebook 呈现为 Web 应用。你在 Web 应用中编写的代码(你在浏览器中看到的 notebook)通过该服务器发送给内核 IPython 内核(在后台运行的 IPython 应用程序),内核运行代码,并将结果发送回该服务器。之后,任何输出都会返回到浏览器中。
  • Jupyter Notebook(Jupyter命名是取自Julia语言,Python语言,R语言,曾用名iPython Notebook)原来也叫iPython Notebook,顾名思义,它和Python关系紧密。Jupyter Notebook 是一个开源的 Web 应用程序,便于创建和共享文学化程序文档,支持40多种编程语言,支持实时代码、数学方程、可视化和 Markdown,其用途包括数据清理和转换、数值模拟、统计建模、机器学习等等。目前,数据挖掘领域中最热门的比赛 Kaggle 里的资料都是 Jupyter 格式。
  • 对于机器学习和数据科学的工作者来说,如果都应该使用或必须使用一种工具,那毫无疑问,它就是Jupyter Notebook;数据科学家可以在上面创建和共享自己的文档,从实现代码到全面报告,Jupyter Notebook大大简化了开发者的工作流程,帮助他们实现更高的生产力和更简单的多人协作。也正是因为如此,它一直以来都是数据科学家们最喜欢的工具之一。

Jupyter Book 所需要的工具 - Anaconda 的Jupyter NoteBook就不错

官方在文档中强烈建议新用户用Anaconda打包安装Python和Anaconda——所谓懒人方法,小白必备。其实除了提到的两个工具,Anaconda还包含数据科学和机器学习中经常需要用到的各种软件包,只需下载、解压、安装,所有工具就都一步到位了。

image
image
image

其中,"C:\Users\86150"就是默认的根目录。

Jupyter Book 生成Demo Book - 很简单的指令

在安装好Jupyter NoteBook 后,创建一个Jupyter Book 的Demo 是很简单的事。

管理员身份打开 Anaconda Prompt

image

创建目录,在Prompt 中定位置该目录,执行jupyter-book create mybookname --demo

会自动生成Jupyter Book 的目录。

image

使用Jupyter NoteBook 编辑 MD, ipynb等 - 另文叙述

执行 jupyter-book build mybookname会自动Build 相应的HTML

image

不过,那些HTML在浏览器直接打开是乱的

image

说是可以推送到 Git Pages,借助GP 的 Jekyll 来得到 – 后面有本地构建Jupyter 书 对应的 Web Site的方法

想要像 Git Pages 那样网页显示 Jupyter Book,需要 Ruby, Jekyll,Gem 和 Bundle – 一定要使用国内的源!

要构建Jupyter Book 本地的Web site,需要类似 Git Hub 的环境,即 Ruby 和 Jekyll。

安装 Ruby

image

得安装 Jekyll – Gem 和 Bundle还是要国内的源

gem install jekyll

安装 Jekyll 的指令很简单,就是gem install jekyll,但是,该指令默认是访问国外的网站,那速度是不能忍受的。所以,必须换成国内的源。

先换国内的源

$ gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
$ gem sources -l
https://gems.ruby-china.com
# 确保只有 gems.ruby-china.com

上面的gems.ruby-china.com只是举例(我安装时倒是测试通过了),也还有其他国内的源可用的。

image

再install Jekyll 就飞快了!

gem install jekyll-paginate

gem install bundle

在没换国内源前,虽然也能成功,但是,jekyll -v 就失败了 – 缺很多东西!

image

即便是安装MSYS2 and MINGW development toolchainJekyll -v 还是失败。

image

虽然似乎可以按照错误提示安装对应的包,但是,太过麻烦!

还是使用Bundle 来的方便:能将所依赖的资源自动安装完成 – 也要国内的源

$ bundle config mirror.https://rubygems.org https://gems.ruby-china.com

换成国内的源然后就是飞快!- bundle install

image

遇到的问题

因为之前安装了 concurrent-ruby 1.1.6,而依赖的是1.1.5,还是不能显示Jekyll -v

image

bundle exec jekyll -v就可以了 – 成功!

image

此时在Jupyter Book 的目录下运行bundle exec Jekyll serve就生成类似GP的Web Book 了!

image
image

其他

遗留的需求

要是能使用Jupyter Book 生成PDF就好了。可是,据现有的资料知道,只支持Web 形式的Book。

Jupyter Book 是想模仿国人YiHui XIE 的 R BookDown

https://jupyterbook.org/intro.html

Jupyter Books lets you build an online book using a collection of Jupyter Notebooks and Markdown files. Its output is similar to the excellent Bookdown tool and adds extra functionality for people running a Jupyter stack.

https://bookdown.org/yihui/bookdown/

image

https://bookdown.org/yihui/rmarkdown/

image

https://bookdown.org/yihui/blogdown/

image

几本Jupyter Book 例子

1. jupyterbook.org自带的样例书,并本地构建

  • book_template拷贝到一个目录,改了名字(目录名字一定不要有空格)。
  • 就直接 jupyter book build xxx [目录名]
  • 有所修改后,再次运行jupyter book build xxx [目录名] --overwrite
  • 进入书籍目录,运行bundle exec jekyll serve
image
image

2. 不错的The Riemann Problems for Hyperbolic PDEs - 还有视频

https://github.com/clawpack/riemann_book

image

JupyterLab,号称极其强大的下一代notebook!- 感兴趣就自己找找吧

一些资料

Dan Toomey 的几本书

  • [Learning Jupyter]
  • [Jupyter Cookbook]
  • [Jupyter for Data Science]
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容