自己制作本地的Jupyter Book

前面一文記錄:篩選寫書工具的艱苦經(jīng)歷簡(jiǎn)要記錄的自己嘗試幾種工具的艱苦努力枣宫,最后的結(jié)論是"Word + Calibre" 制造常用的電子書(DOCX, PDF, EPUB盐碱,MOBI和azw3等)還是夠用的。不過(guò)圆米,還是覺得要寫一本使用Python 完成編程的書(近期的計(jì)劃是商務(wù)視角下的數(shù)據(jù)分析非迹,和高性能計(jì)算)?抡谐,能夠編纂配套的代碼展示也是有必要的,所以俏蛮,又了解了下使用Jupyter NoteBook 編寫Python 代碼書的技巧撑蚌,匯總于此。

關(guān)于 Jupyter Notebook

Jupyter notebook 由 Fernando Perez 在 2001 發(fā)起搏屑。它的目標(biāo)是提供 "Tools for the entire life cycle of research computing." 如果說(shuō) Python 是數(shù)據(jù)科學(xué)操作的引擎争涌,那么 IPython 就是交互式的控制面板。

The guy at left is Fernando Perez
  • IPython 只是為 NumPy辣恋、Scipy亮垫、Pandas、Matplotlib 等包提供一個(gè)交互式接口伟骨。其本身并不提供科學(xué)計(jì)算的功能饮潦。這些工具組合在一起,形成了可以匹敵如 Matlab携狭、Mathmatic 這些復(fù)雜工具的科學(xué)計(jì)算框架继蜡。
  • IPython 是一種交互式 shell,與普通的 Python shell 相似暑中,但具有一些很好的功能(例如語(yǔ)法高亮顯示和代碼補(bǔ)全)壹瘟。notebook 的工作方式是:你通過(guò)瀏覽器連接到該服務(wù)器,而 notebook 呈現(xiàn)為 Web 應(yīng)用鳄逾。你在 Web 應(yīng)用中編寫的代碼(你在瀏覽器中看到的 notebook)通過(guò)該服務(wù)器發(fā)送給內(nèi)核 IPython 內(nèi)核(在后臺(tái)運(yùn)行的 IPython 應(yīng)用程序)稻轨,內(nèi)核運(yùn)行代碼,并將結(jié)果發(fā)送回該服務(wù)器雕凹。之后殴俱,任何輸出都會(huì)返回到瀏覽器中。
  • Jupyter Notebook(Jupyter命名是取自Julia語(yǔ)言枚抵,Python語(yǔ)言线欲,R語(yǔ)言,曾用名iPython Notebook)原來(lái)也叫iPython Notebook汽摹,顧名思義李丰,它和Python關(guān)系緊密。Jupyter Notebook 是一個(gè)開源的 Web 應(yīng)用程序逼泣,便于創(chuàng)建和共享文學(xué)化程序文檔趴泌,支持40多種編程語(yǔ)言舟舒,支持實(shí)時(shí)代碼、數(shù)學(xué)方程嗜憔、可視化和 Markdown秃励,其用途包括數(shù)據(jù)清理和轉(zhuǎn)換、數(shù)值模擬吉捶、統(tǒng)計(jì)建模夺鲜、機(jī)器學(xué)習(xí)等等。目前呐舔,數(shù)據(jù)挖掘領(lǐng)域中最熱門的比賽 Kaggle 里的資料都是 Jupyter 格式币励。
  • 對(duì)于機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)的工作者來(lái)說(shuō),如果都應(yīng)該使用或必須使用一種工具滋早,那毫無(wú)疑問(wèn)榄审,它就是Jupyter Notebook;數(shù)據(jù)科學(xué)家可以在上面創(chuàng)建和共享自己的文檔杆麸,從實(shí)現(xiàn)代碼到全面報(bào)告搁进,Jupyter Notebook大大簡(jiǎn)化了開發(fā)者的工作流程,幫助他們實(shí)現(xiàn)更高的生產(chǎn)力和更簡(jiǎn)單的多人協(xié)作昔头。也正是因?yàn)槿绱吮剩恢币詠?lái)都是數(shù)據(jù)科學(xué)家們最喜歡的工具之一。

Jupyter Book 所需要的工具 - Anaconda 的Jupyter NoteBook就不錯(cuò)

官方在文檔中強(qiáng)烈建議新用戶用Anaconda打包安裝Python和Anaconda——所謂懶人方法揭斧,小白必備莱革。其實(shí)除了提到的兩個(gè)工具,Anaconda還包含數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)中經(jīng)常需要用到的各種軟件包讹开,只需下載盅视、解壓、安裝旦万,所有工具就都一步到位了闹击。

image
image
image

其中,"C:\Users\86150"就是默認(rèn)的根目錄成艘。

Jupyter Book 生成Demo Book - 很簡(jiǎn)單的指令

在安裝好Jupyter NoteBook 后赏半,創(chuàng)建一個(gè)Jupyter Book 的Demo 是很簡(jiǎn)單的事。

管理員身份打開 Anaconda Prompt

image

創(chuàng)建目錄淆两,在Prompt 中定位置該目錄断箫,執(zhí)行jupyter-book create mybookname --demo

會(huì)自動(dòng)生成Jupyter Book 的目錄。

image

使用Jupyter NoteBook 編輯 MD, ipynb等 - 另文敘述

執(zhí)行 jupyter-book build mybookname會(huì)自動(dòng)Build 相應(yīng)的HTML

image

不過(guò)秋冰,那些HTML在瀏覽器直接打開是亂的

image

說(shuō)是可以推送到 Git Pages仲义,借助GP 的 Jekyll 來(lái)得到 – 后面有本地構(gòu)建Jupyter 書 對(duì)應(yīng)的 Web Site的方法

想要像 Git Pages 那樣網(wǎng)頁(yè)顯示 Jupyter Book,需要 Ruby, Jekyll,Gem 和 Bundle – 一定要使用國(guó)內(nèi)的源埃撵!

要構(gòu)建Jupyter Book 本地的Web site尸诽,需要類似 Git Hub 的環(huán)境,即 Ruby 和 Jekyll盯另。

安裝 Ruby

image

得安裝 Jekyll – Gem 和 Bundle還是要國(guó)內(nèi)的源

gem install jekyll

安裝 Jekyll 的指令很簡(jiǎn)單,就是gem install jekyll洲赵,但是鸳惯,該指令默認(rèn)是訪問(wèn)國(guó)外的網(wǎng)站,那速度是不能忍受的叠萍。所以芝发,必須換成國(guó)內(nèi)的源。

先換國(guó)內(nèi)的源

$ 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只是舉例(我安裝時(shí)倒是測(cè)試通過(guò)了)苛谷,也還有其他國(guó)內(nèi)的源可用的辅鲸。

image

再install Jekyll 就飛快了!

gem install jekyll-paginate

gem install bundle

在沒(méi)換國(guó)內(nèi)源前腹殿,雖然也能成功独悴,但是,jekyll -v 就失敗了 – 缺很多東西锣尉!

image

即便是安裝MSYS2 and MINGW development toolchainJekyll -v 還是失敗刻炒。

image

雖然似乎可以按照錯(cuò)誤提示安裝對(duì)應(yīng)的包,但是自沧,太過(guò)麻煩坟奥!

還是使用Bundle 來(lái)的方便:能將所依賴的資源自動(dòng)安裝完成 – 也要國(guó)內(nèi)的源

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

換成國(guó)內(nèi)的源然后就是飛快!- bundle install

image

遇到的問(wèn)題

因?yàn)橹鞍惭b了 concurrent-ruby 1.1.6拇厢,而依賴的是1.1.5爱谁,還是不能顯示Jekyll -v

image

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

image

此時(shí)在Jupyter Book 的目錄下運(yùn)行bundle exec Jekyll serve就生成類似GP的Web Book 了孝偎!

image
image

其他

遺留的需求

要是能使用Jupyter Book 生成PDF就好了访敌。可是邪媳,據(jù)現(xiàn)有的資料知道捐顷,只支持Web 形式的Book。

Jupyter Book 是想模仿國(guó)人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自帶的樣例書雨效,并本地構(gòu)建

  • book_template拷貝到一個(gè)目錄迅涮,改了名字(目錄名字一定不要有空格)。
  • 就直接 jupyter book build xxx [目錄名]
  • 有所修改后徽龟,再次運(yùn)行jupyter book build xxx [目錄名] --overwrite
  • 進(jìn)入書籍目錄叮姑,運(yùn)行bundle exec jekyll serve
image
image

2. 不錯(cuò)的The Riemann Problems for Hyperbolic PDEs - 還有視頻

https://github.com/clawpack/riemann_book

image

JupyterLab,號(hào)稱極其強(qiáng)大的下一代notebook!- 感興趣就自己找找吧

一些資料

Dan Toomey 的幾本書

  • [Learning Jupyter]
  • [Jupyter Cookbook]
  • [Jupyter for Data Science]
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末传透,一起剝皮案震驚了整個(gè)濱河市耘沼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌朱盐,老刑警劉巖群嗤,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異兵琳,居然都是意外死亡狂秘,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門躯肌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)者春,“玉大人,你說(shuō)我怎么就攤上這事清女∏蹋” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵嫡丙,是天一觀的道長(zhǎng)拴袭。 經(jīng)常有香客問(wèn)我,道長(zhǎng)曙博,這世上最難降的妖魔是什么稻扬? 我笑而不...
    開封第一講書人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮羊瘩,結(jié)果婚禮上泰佳,老公的妹妹穿的比我還像新娘。我一直安慰自己尘吗,他們只是感情好逝她,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著睬捶,像睡著了一般黔宛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上擒贸,一...
    開封第一講書人閱讀 51,365評(píng)論 1 302
  • 那天臀晃,我揣著相機(jī)與錄音,去河邊找鬼介劫。 笑死徽惋,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的座韵。 我是一名探鬼主播险绘,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼踢京,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了宦棺?” 一聲冷哼從身側(cè)響起瓣距,我...
    開封第一講書人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎代咸,沒(méi)想到半個(gè)月后蹈丸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡呐芥,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年白华,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贩耐。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖厦取,靈堂內(nèi)的尸體忽然破棺而出潮太,到底是詐尸還是另有隱情,我是刑警寧澤虾攻,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布铡买,位于F島的核電站,受9級(jí)特大地震影響霎箍,放射性物質(zhì)發(fā)生泄漏奇钞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一漂坏、第九天 我趴在偏房一處隱蔽的房頂上張望景埃。 院中可真熱鬧,春花似錦顶别、人聲如沸谷徙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)完慧。三九已至,卻和暖如春剩失,著一層夾襖步出監(jiān)牢的瞬間屈尼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工拴孤, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留脾歧,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓演熟,卻偏偏與公主長(zhǎng)得像涨椒,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容