前面一文記錄:篩選寫書工具的艱苦經(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 就是交互式的控制面板。
- 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)常需要用到的各種軟件包讹开,只需下載盅视、解壓、安裝旦万,所有工具就都一步到位了闹击。
其中,"C:\Users\86150"就是默認(rèn)的根目錄成艘。
Jupyter Book 生成Demo Book - 很簡(jiǎn)單的指令
在安裝好Jupyter NoteBook 后赏半,創(chuàng)建一個(gè)Jupyter Book 的Demo 是很簡(jiǎn)單的事。
管理員身份打開 Anaconda Prompt
創(chuàng)建目錄淆两,在Prompt 中定位置該目錄断箫,執(zhí)行jupyter-book create mybookname --demo
會(huì)自動(dòng)生成Jupyter Book 的目錄。
使用Jupyter NoteBook 編輯 MD, ipynb等 - 另文敘述
執(zhí)行 jupyter-book build mybookname
會(huì)自動(dòng)Build 相應(yīng)的HTML
不過(guò)秋冰,那些HTML在瀏覽器直接打開是亂的
說(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
得安裝 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)的源可用的辅鲸。
再install Jekyll 就飛快了!
gem install jekyll-paginate
gem install bundle
在沒(méi)換國(guó)內(nèi)源前腹殿,雖然也能成功独悴,但是,jekyll -v 就失敗了 – 缺很多東西锣尉!
即便是安裝MSYS2 and MINGW development toolchain
– Jekyll -v
還是失敗刻炒。
雖然似乎可以按照錯(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
遇到的問(wèn)題
因?yàn)橹鞍惭b了 concurrent-ruby 1.1.6拇厢,而依賴的是1.1.5爱谁,還是不能顯示Jekyll -v
bundle exec jekyll -v
就可以了 – 成功!
此時(shí)在Jupyter Book 的目錄下運(yùn)行bundle exec Jekyll serve
就生成類似GP的Web Book 了孝偎!
其他
遺留的需求
要是能使用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/
https://bookdown.org/yihui/rmarkdown/
https://bookdown.org/yihui/blogdown/
幾本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
2. 不錯(cuò)的The Riemann Problems for Hyperbolic PDEs
- 還有視頻
https://github.com/clawpack/riemann_book
JupyterLab,號(hào)稱極其強(qiáng)大的下一代notebook
!- 感興趣就自己找找吧
一些資料
Dan Toomey 的幾本書
- [Learning Jupyter]
- [Jupyter Cookbook]
- [Jupyter for Data Science]