web-dev-qa-db-ja.com

デフォルトでIPython Notebookコードセルに行番号を表示する方法

IPythonノートブックコードセルのデフォルト表示に行番号を含めたい。

IPython/Jupyter Notebooksで行番号を表示する から、これをctrl-MLで切り替えることができることを学びました。デフォルトで行番号を含めるには、ipython_notebook_config.pyファイルに何かを追加する必要があります。私が何かを見逃していない限り、ドキュメントでこれを行う方法の説明はありません。

28
khstacking

_custom.js_ファイル(場所はOSによって異なります)

_IPython.Cell.options_default.cm_config.lineNumbers = true;_

Custom.jsが見つからない場合は、単に検索できますが、通常はprofile_defaultフォルダーにあります。存在しない場合は、$(ipython locate profile)/static/custom/custom.jsでファイルを作成します

何らかの理由で機能しない場合は、_custom.js_内の_site-packages/IPython/html/static/custom/_ファイルを同じ方法でいつでも編集できます。

22
William Denman

(Jupyter 4+の場合)最新のJupyterバージョンでは、 ドキュメント化された 構成を変更する場所があります。基本的に、Jupyterの更新では、プロファイルの概念が削除されたため、_custom.js_フォルダーの場所に応じて、_.jupyter/custom/custom.js_ファイルの場所は_.jupyter_になりました。したがって、customフォルダーまたは_custom.js_ファイルがない場合は、それらを作成してから、これらの行を新しく作成したファイルに追加します。

_define([
    'base/js/namespace',
    'base/js/events'
    ], 
    function(IPython, events) {
        events.on("app_initialized.NotebookApp", 
            function () {
                require("notebook/js/cell").Cell.options_default.cm_config.lineNumbers = true;
            }
        );
    }
);
_

上記は、行番号をすべてのセルタイプに同時に設定するためのものです。これを行うと、コード、マークダウン、および未加工のセルはすべて行番号を取得します。行番号コードセルのみが必要な場合は、より簡単な方法があります。コードセルを選択し、Chrome/Firefox JavaScriptコンソールを開き、次の行を入力します。

_var cell = Jupyter.notebook.get_selected_cell();
var config = cell.config;
var patch = {
    CodeCell:{
        cm_config:{lineNumbers:true}
    }
}
config.update(patch)
_

次に、ページをリロードします。 Jupyterが_.jupyter/nbconfig_にjson設定ファイルを作成して保存するため、これらの変更は持続します。このメソッドはドキュメントの このページ からのものであるため、設定を変更するためにドキュメントを参照してください。


(古い回答)

IPython Notebookの最新バージョン(v3.1.0)で、_~/.ipython/<profile_name>/static/custom/custom.js_に移動し、次の行を追加します。

_define([
    'base/js/namespace',
    'base/js/events'
    ], 
    function(IPython, events) {
        events.on("app_initialized.NotebookApp", 
            function () {
                IPython.Cell.options_default.cm_config.lineNumbers = true;
            }
        );
    }
);
_

_IPython.Cell.options_default.cm_config.lineNumbers = true;_行だけでは、これを試行する前にIPython.Cellオブジェクトをロードする必要があるため機能しません。この行のみを追加すると、コンソールで未定義のエラーが発生します。図に示すように、イベントハンドラーに入れる必要があります。

@ William-Denmanのコードは以前のバージョンでも機能していたかもしれませんが、今はこれを行う必要があります。

編集:最新バージョンのIPython/Jupyterの場合、真ん中のコード行をrequire("notebook/js/cell").Cell.options_default.cm_config.lineNumbers = true;に変更する必要があります(IPython 4.0.0、Jupyter 4.0。 6)。古い_IPython.Cell_オブジェクトも動作しますが、Webコンソールは非推奨の警告をスローするため、将来のバージョンでは古い行がサポートされないことが予想されます。

また、 WinPython portable を使用して実行している最新のIPython/Jupyterでは、プロファイルフォルダー内に_custom.js_ファイルが見つかりませんでした。 _WinPython-64bit-2.7.10.3\python-2.7.10.AMD64\Lib\site-packages\notebook\static\custom_で( much 検索後)見つけました。これがWinPythonのものかJupyterのものかはわかりません。誰かがJupyter(最新バージョン)を正常に(pipなどを使用して)インストールしても、プロファイルフォルダーで_custom.js_ファイルを見つけることができる場合は、コメントしてください。

41
Mindstormer619

上記は2018年にはうまくいきませんでした

~/.jupyter/nbconfig/notebook.json次の行を追加するために追加する必要がありました。

"CodeCell": {
  "cm_config": {
  "lineNumbers": true
}

そこにあったオブジェクトの内部。したがって、最終的なオブジェクトは次のようになります。

{
  "CodeCell": {
    "cm_config": {
      "lineNumbers": true
    }
  }
}
4
Stephen Cowley