將 Jupyter Notebook 整理成一本書

栏目: Python · 发布时间: 6年前

内容简介:從學期初修 Python就一直在吃老本,直到最近學到物件導向才開始認真思索寫筆記這件事。就寫筆記而言,我最熟悉的工具當然是 R Markdown,而 RStudio 目前其實 Jupyter Book 的概念非常簡單:但它真正厲害的地方在於它的靜態網頁模板 (

從學期初修 Python 就一直在吃老本,直到最近學到物件導向才開始認真思索寫筆記這件事。就寫筆記而言,我最熟悉的 工具 當然是 R Markdown,而 RStudio 目前 對 Python 也有不錯的支援 。但我平常把 JupyterLab 當成 Python 的 IDE 在使用,自然比較習慣這個環境,因此就決定使用 Jupyter Notebook 來寫筆記。我第一個想到的問題就是:R Markdown 的世界裡有 bookdown 將多個 .Rmd 變成一本書 (網頁),但 Jupyter Notebook 似乎沒有這麼方便的工具。 我錯了 。好概念傳播的很快,受到 bookdown 的啟發,Jupyter 的世界裡也出現了一套類似的工具 — Jupyter Book

What is Jupyter Book?

其實 Jupyter Book 的概念非常簡單:

  1. 將 Jupyter Notebook ( .ipynb ) 轉換成 markdown ( .md )
  2. 使用 Jekyll (靜態網頁產生器) 生成網頁

但它真正厲害的地方在於它的靜態網頁模板 ( 範例 ):

  1. 版面風格與 Jupyter Notebook 類似
  2. 網頁模板添加許多功能
    • .ipynb 下載連結
    • binder 連結
    • 直接執行程式碼 (byThebe Lab)

Jupyter Book 的 Jekyll 模板

Jupyter Book 提供了相當清楚易懂的 說明文件 。唯一需要注意的是,Jupyter Book 必須使用 Jekyll 才能在個人電腦上預覽網頁,而安裝 Jekyll 是非常麻煩的事 (尤其在 Windows 上)。為解決這麻煩,Jupyter Book 很細心的提供了 docker 使用 Jekyll 的方式 ,減少安裝 Jekyll 的麻煩 (但學習使用 docker 又是另一個麻煩事)。如果對於 Jekyll 運作了然於心,其實可以不用在個人電腦上安裝 Jekyll 預覽網頁,直接將生成的檔案丟到 GitHub 上讓 GitHub Pages 生成網頁。

但對多數人最頭痛的應該是 Jekyll 模板的結構,這邊提供快速上手的說明 (換言之,在不懂 Jekyll 下使用 Jupyter Book 的模板)。

使用 Jupter Book

  1. 安裝
    pip install jupyter-book
  2. 匯入模板

    jupyter-book create mybookname

    這個指令會匯入 Jupyter Book 的 Jekyll 模板 (簡化):

    mybookname/
     ├── _config.yml
     ├── content
     │   ├── images
     │   │   └── logo
     │   │       └── favicon.ico
     │   └── notebook.ipynb
     └── _data
         └── toc.yml

    在這模板裡面,

    • content/

      存放 Jupyter Notebook 的地方,可依照自己喜好使用任意檔案結構 (e.g. content/01/ 裡面放多個 notebook,如 content/01/intro.ipynb , content/01/hello-world.ipynb ;或是直接將 notebook 丟在 content/ 之下)。

    • _data/toc.yml

      content/ 中的檔案結構可有很大彈性,因為網頁的目錄 (左欄) 連結是在 _data/toc.yml手動設定 的。例如,要將 content/01/intro.ipynb 生成之網頁的連結放在目錄上 ,得在 _data/toc.yml 設定:

      - title: Introduction
        url: /01/intro
        not_numbered: false
        expand_sections: false
    • _config.yml

      這裡是設定 Jekyll 網頁的一些資訊,例如網站名稱和作者等。特別需要注意的是 baseurlurl 這兩個項目。如果你的網頁是透過 GitHub Pages 產生的 (假設這份 Jekyll 模板上傳到 GitHub 的 mybookname repo),那 baseurl 就會是 /mybookname

      baseurl: /mybookname
      url: https://<user>.github.io
  3. 輸出 (不需 Jekyll):將 Working directory 設成 mybookname/ ,執行下方指令
    python scripts/clean.py  # 清理之前產生的檔案
    jupyter-book build ./    # 從 `contents/` 產生 Jekyll 能處理的檔案
  4. 上傳至 GitHub (記得到 Repo 的 Settings 裡設定,讓 GitHub Pages 使用 master branch 生成網頁)

這樣就大功告成了!

My Python Note

liao961120/pynote 是我透過 Jupyter Book 設置的 Python 筆記 ,與上面介紹不同的是,我使用的是 netlify 而非 GitHub Pages;另外,我也透過 Travis-CI 幫我執行 python scripts/clean.pyjupyter-book build ./ ,所以就不用在每次修改筆記後,還得在電腦上跑這些指令。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

打造有吸引力的学习型社群

打造有吸引力的学习型社群

苏平、田士杰、吕守玉 / 机械工业出版社 / 45.00元

本书首先对社群的定位、准备和吸引粉丝方面等做了饶有趣味的介绍,从社群黏度的提升、社群知识的迭代与转化和社群的持续发展等多个角度入手,对学习型社群的运营手段、运营模式、运营规律和运营经验等进行了全方位剖析。从中国培训师沙龙这个公益社群近十年成功运营的经验中,为如何经营好学习型社群总结出了一套系统性的、具有实操价值的方法。并以此为基础,扩展到知识管理、团队管理、内容IP等领域,为有致于社团建设以及优质......一起来看看 《打造有吸引力的学习型社群》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

随机密码生成器
随机密码生成器

多种字符组合密码

MD5 加密
MD5 加密

MD5 加密工具