產生 Jupyter/Colab 筆記本

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 程式碼片段。寫入筆記本時,它也會移除用於顯示分頁區段的標記。