nbgenerate
工具會將 DevSite HTML 和 Markdown 內容和範本轉換為與 Colab 相容的 Jupyter 筆記本。
OverView
從 Google Colab 網站:
Colab 筆記本可讓您在單一文件中結合可執行的程式碼和 RTF 格式,並附帶圖片、HTML、LaTeX 等其他格式的內容。
在 Colab 中,可以在網路瀏覽器上編寫及執行 Python 程式碼,不需要 其他設定或安裝Markdown 內容可與程式碼單元交錯排列,讓您在同一文件中提供豐富的內容。如此一來 Colab 筆記本是熱門解決方案,不僅適用於量性研究和 並用來示範和實驗 API 和 API 相關概念,例如開發人員說明文件中的常見概念
因此,Colab 筆記本中分享的內容通常會與 Google 開發人員說明文件中發布的內容重疊。nbgenerate 工具則排除了 必須手動同步 DevSite 標記與支援 Colab 筆記本。工具 將 DevSite HTML 和 Markdown 轉換為 Colab 使用的 .ipynb 檔案格式,並 以及其他 Jupyter 筆記本實作這可讓系統使用 DevSite 內容 做為開發人員說明文件和 Colab 筆記本的單一可靠資料來源
如需背景和技術詳細資訊,請參閱 nbgenerate-dd 中的原始設計文件。
基本用法
如要針對 DevSite 專案中的頁面產生 Colab 筆記本,您必須
在叫用 nbgenerate
指令前新增名為 _notebooks.yaml
的檔案。
將 _notebooks.yaml 加入專案
如要從 DevSite 專案中的網頁產生 Colab 程式筆記,請將名為 _notebooks.yaml
的檔案新增至專案根目錄 (位於網站 _project.yaml
所在的目錄)。此檔案應包含每個要以 Colab 程式筆記分享的網頁一個項目。每個項目的 source
欄位都必須包含絕對值
DevSite 用戶群中的路徑,才能轉換為 Colab 筆記本。
target
欄位必須指定產生 Colab 的 google3 儲存路徑
寫入筆記本
例如:
- source: /earth-engine/ee-image.html
target: //depot/google3/third_party/earthengine_community/ipynb/ee-image.ipynb
- source: /earth-engine/guides/image_objects.md
target: //depot/google3/third_party/earthengine_community/ipynb/guides/image_objects.ipynb
這個範例使用使用 Copybara 複製至 GitHub 的目標路徑,因此產生的 Notebook 可透過公開可存取的超連結開啟。請參閱 copybara ,進一步瞭解如何將 google3 路徑同步至 GitHub。其他參考資訊 小工具範例提供多個示例,針對 GitHub 中產生的筆記本新增連結。
產生筆記本
第一次執行 nbgenerate
之前,請在 .bashrc
中定義別名,並將其設為目前的殼層:
alias nbgenerate="/google/bin/releases/devsite/tools/nbgenerate/nbgenerate.par"
接著,您可以透過指令列執行 nbgenerate
,重新產生所有檔案
列於 _notebooks.yaml
:
nbgenerate googledata/devsite/content/en/PROJECT
指定一或多個路徑做為 nbgenerate
的引數,即可將處理作業限制在指定的檔案或路徑中,例如:
nbgenerate third_party/devsite/developers/en/earth-engine/guides
目錄路徑會以遞迴方式處理。「_notebooks.yaml
」中的任何檔案,或
就會處理指定目錄下的值
如果您在使用上述別名執行 nbgenerate
時收到「Permission denied」訊息,也可以使用下列指令執行工具:
blaze run //devsite/tools/nbgenerate -- googledata/devsite/content/en/PROJECT
篩選內容
有些內容只能顯示在 DevSite 網頁上,或是
產生的 Colab 筆記本,但兩者無法,你可以透過
is_ipynb
變數,在 nbgenerate
轉換期間設為 True
上傳資料集之後,您可以運用 AutoML
自動完成部分資料準備工作為避免在前置站台和發布至 DevSite 時發生錯誤,請在需要選擇性納入內容的網頁頂端附近新增以下內容:
{% if is_ipynb is not defined %}{% set is_ipynb=False %}{% endif %}
接著,您可以使用 Jinja 標記,控管要讓哪些內容顯示在 Colab、DevSite 或兩者中。例如:
# Overview This section will show in both the DevSite page and in the Colab notebook as a text cell. {% if is_ipynb %} This content will only appear in Colab notebooks but not on DevSite pages. This is useful for providing Colab-specific initialization and setup instructions or code. {% endif %} {% if not is_ipynb %} ```js // This code snippet will only be rendered in DevSite but not in Colab // notebooks. console.log('Hello, nbgenerate!'); ``` {% endif %} ```py # This snippet will appear in both DevSite and in the Colab notebook as a code # cell. print('Hello, nbgenerate!'); ```
小工具範例
網站經常會定義自己的 DevSite 小工具,以便封裝常見的行為。以下是使用 is_ipynb
變數的幾個小工具範例,您可以視情況加以調整,以符合網站需求。
Colab 筆記本按鈕小工具
Earth Engine 開發人員說明文件會使用自訂小工具,在與 GitHub 中的 Colab 筆記本同步後,持續顯示 DevSite 頁面上的「在 Colab 中執行」和「在 GitHub 查看原始碼」按鈕。
範例區段小工具
範例區段小工具提供範例,說明如何為多種程式設計語言或環境中顯示的程式碼片段,設定分頁區段。小工具只負責在 Colab 筆記本中加入 Python 程式碼片段。寫入筆記本時,它也會移除用於顯示分頁區段的標記。