從 IPython Notebook 遷移#

摘要#

大拆分將 IPython 的各種語言無關元件置於 Jupyter 傘下。展望未來,Jupyter 將包含服務多種語言的語言無關專案。IPython 將繼續專注於 Python 及其與 Jupyter 的使用。

本文件描述了從 IPython 版本 3 遷移到 Jupyter 時已發生的變化,以及您可能需要如何修改程式碼或配置。

理解遷移過程#

檔案自動遷移#

首次執行任何 jupyter 命令時,它將執行檔案的自動遷移。自動遷移過程會複製檔案,而不是移動檔案,將原始檔案保留在原位,並將副本放置在 Jupyter 檔案位置。如果需要,您可以透過呼叫 jupyter migrate 重新執行遷移。您的自定義配置將自動遷移,並且應該在不進行進一步編輯的情況下與 Jupyter 配合使用。將來更新或修改配置時,請記住檔案位置可能已更改。

我的配置檔案去哪了?#

也稱為:“為什麼我的配置不再起作用了?”

Jupyter 從 IPython 中分離出來意味著某些檔案的位置已移動,並且 Jupyter 專案並未繼承 IPython 的所有做法。

當您啟動第一個 Jupyter 應用程式時,相關的配置檔案會自動複製到新的 Jupyter 位置。IPython 位置中的原始配置檔案對 Jupyter 的執行沒有影響。如果您不小心編輯了原始 IPython 配置檔案,您現在可能看不到 Jupyter 的預期效果。您應該檢查您是否正在編輯 Jupyter 的配置檔案,並且在重新啟動 Jupyter 伺服器後應該會看到預期的效果。

查詢重要檔案位置#

本節提供 IPython 3 檔案和已遷移的 Jupyter 檔案的常見位置快速參考。

配置檔案#

配置檔案根據使用者的偏好自定義 Jupyter。遷移的檔案都應該自動複製到新的 Jupyter 位置。以下是位置更改:

IPython 位置

Jupyter 位置

~/.ipython/profile_default/static/custom

~/.jupyter/custom

~/.ipython/profile_default/ipython_notebook_config.py

~/.jupyter/jupyter_notebook_config.py

~/.ipython/profile_default/ipython_nbconvert_config.py

~/.jupyter/jupyter_nbconvert_config.py

~/.ipython/profile_default/ipython_qtconsole_config.py

~/.jupyter/jupyter_qtconsole_config.py

~/.ipython/profile_default/ipython_console_config.py

~/.jupyter/jupyter_console_config.py

要選擇除預設的 ~/.jupyter 之外的目錄位置,請設定 JUPYTER_CONFIG_DIR 環境變數。設定環境變數後,您可能需要執行 jupyter migrate 以將檔案複製到所需目錄。

資料檔案:核心規範和筆記本擴充套件#

資料檔案包括除配置檔案以外的使用者安裝檔案。示例包括核心規範和筆記本擴充套件。與配置檔案一樣,資料檔案也會自動遷移到新的 Jupyter 位置。

IPython 3 中,資料檔案位於 ~/.ipython 中。

Jupyter 中,資料檔案使用平臺適用的位置

  • OS X: ~/Library/Jupyter

  • Windows: %APPDATA% 環境變數中指定的位置

  • 在其他地方,$XDG_DATA_HOME 受到尊重,預設值為 ~/.local/share/jupyter

在所有情況下,都可以使用 JUPYTER_DATA_DIR 環境變數顯式設定位置。

系統範圍安裝的資料檔案(例如在 /usr/local/share/jupyter 中)未更改。每個使用者安裝的資料檔案已從 .ipython 更改為平臺適用的 Jupyter 位置。

由於 Jupyter 沒有配置檔案,我如何自定義它?#

雖然 IPython 有 配置檔案 的概念,但 Jupyter 沒有配置檔案

在 IPython 中,配置檔案是配置和執行時檔案的集合。在 IPython 目錄 (~/.ipython) 中,有名稱如 profile_defaultprofile_demo 的目錄。每個目錄中都包含配置檔案 (ipython_config.py, ipython_notebook_config.py) 和執行時檔案 (history.sqlite, security/kernel-*.json)。配置檔案可用於在 IPython 的配置之間切換。

以前,人們可以使用 ipython notebook --profile demo 等命令為筆記本伺服器和 IPython 核心設定配置檔案。這在 Jupyter 中已無法一氣呵成,就像在 IPython 3 中對任何其他核心也不可能一樣。

更改 Jupyter 筆記本配置目錄#

如果要更改筆記本配置,可以設定 JUPYTER_CONFIG_DIR

JUPYTER_CONFIG_DIR=./jupyter_config
jupyter notebook

更改 Jupyter 筆記本配置檔案#

如果您只想更改配置檔案,您可以這樣做

jupyter notebook --config=/path/to/myconfig.py

使用自定義核心規範更改 IPython 的配置檔案#

如果您確實想更改 IPython 核心的配置檔案,您將無法再在伺服器命令列中執行此操作。核心引數必須透過修改核心規範來更改。您無需重新啟動伺服器即可執行此操作。核心規範更改會在您每次啟動新核心時生效。但是,沒有很好的方法來修改核心規範。一種方法是使用 jupyter kernelspec list 查詢 kernel.json 檔案,然後手動修改它,例如 kernels/python3/kernel.json。此外,a2km 是一個實驗性專案,旨在使這些事情變得更容易。

例如,將 --profile 選項新增到 kernels/mycustom/kernel.json 下的自定義核心規範中(請參見此處的 Jupyter 核心規範說明

{
 "argv": ["python", "-m", "ipykernel",
          "--profile=my-ipython-profile",
          "-f", "{connection_file}"],
 "display_name": "Custom Profile Python",
 "language": "python"
}

然後,您可以使用 --kernel=mycustom 命令列選項執行 Jupyter,IPython 將找到相應的配置檔案。

理解安裝更改#

有關安裝 Jupyter 的更多資訊,請參閱安裝和使用頁面。Jupyter 會自動遷移一些內容,例如筆記本擴充套件和核心。

筆記本擴充套件#

任何 IPython 筆記本擴充套件都應作為資料檔案遷移的一部分自動遷移

筆記本擴充套件以前透過以下方式安裝:

ipython install-nbextension [--user] EXTENSION

現在,擴充套件透過以下方式安裝:

jupyter nbextension install [--user] EXTENSION

筆記本擴充套件將安裝在系統範圍的位置(例如 /usr/local/share/jupyter/nbextensions)。如果是 --user 安裝,筆記本擴充套件將進入 JUPYTER_DATA_DIR 位置。不應透過猜測檔案應放置的位置來手動安裝。

核心#

核心的安裝方式與筆記本擴充套件非常相似。它們也將自動遷移

核心規範以前透過以下方式安裝:

ipython kernelspec install [--user] KERNEL

它們現在透過以下方式安裝:

jupyter kernelspec install [--user] KERNEL

預設情況下,核心規範將放置在系統範圍的位置(例如 /usr/local/share/jupyter/kernels)。如果是 --user 安裝,核心規範將放置在 JUPYTER_DATA_DIR 位置。不應透過猜測檔案應放置的位置來手動安裝。

理解匯入中的更改#

IPython 4.0 包含用於管理依賴項的 shim;因此,所有在 IPython 3 上執行的匯入都應在 IPython 4 上繼續執行。如果您發現任何差異,請告訴我們

一些更改包括

IPython 3

Jupyter 和 IPython 4.0

IPython.html

notebook

IPython.html.widgets

ipywidgets

IPython.kernel

jupyter_client, ipykernel

IPython.parallel

ipyparallel

IPython.qt.console

qtconsole

IPython.utils.traitlets

traitlets

IPython.config

traitlets.config

重要

IPython.kernel 拆分

IPython.kernel 變成了兩個包

  • jupyter_client 用於 Jupyter 客戶端 API。

  • ipykernel 用於 Jupyter 的 IPython 核心