6

base_url特に、コードが実行されている Notebook Serverを知りたいです。

IPython Notebooks バージョン 2.x では、次のことを行っていました。

config = get_ipython().config
print config['NotebookApp']['base_url']

ただし、これは IPython Notebook 3.x / Jupyter Notebook では機能しなくなりました。

編集:私が達成しようとしていることの詳細。

さまざまな sを介してアクセスされる同じホスト上の個別の Docker コンテナーで、さまざまな IPython サーバーを実行していますbase_urlquantopian/qgridパッケージを使用して、ノートブック内に Pandas DataFrame を表示したいと考えています。最初は、Javascript 依存関係のローカル コピーを提供するためのqgridカスタムbase_urlプレフィックスを処理しませんでしたが、上記のコードによりbase_url、IPython 2 で を見つけて、関連base_urlするものを Javascript テンプレートに挿入することができました。

また、ノートブックでmpld3ライブラリを使用したいと思います。ドキュメントを参照すると、 「IPython 2.0 以降では、url プレフィックスが追加されている場合 (たとえば、NotebookApp.base_url を設定することによって) local=True が失敗する可能性がある」ことにも言及していることがわかりました。したがって、これは孤立した問題ではなく、適切な解決策が価値があると思われます。

以下の @matt のコメントと、カーネルとフロントエンドの分割について詳しく考えると、カーネルから NotebookApp 構成にアクセスできないことは理にかなっています。それが何であるかを知る必要があるのは実際に生成された JS コードなbase_urlので、ノートブック JS API でこれにアクセスできる場所を誰かが教えてくれれば、それで解決するはずです。

4

2 に答える 2

3

フロントエンド側から、javasscript を公開し、ノートブックを使用していると仮定すると (JS を使用しているからといって必ずしもノートブックを使用しているわけではないことに注意してください。Atom-Hydrogen や Jupyter-Sidecar を使用することもできます)、次のようなスニペットを使用できます。

require(['base/js/utils'], function(utils){
    var base_url = utils.get_body_data('base-url')
})

data-base-url属性は<body>ノートのタグに設定されています。

ただし、このままであることが保証されているわけではありません。通常、拡張機能はnbextensionsフォルダーにインストールする必要があり、自動的に正しく解決されます。

require.config({

      ...
      paths: {
        nbextensions : '<base url>/nbextensions',
        kernelspecs : '<base url>/kernelspecs',
...
})

Nbextension は検索パスであるため、サーバーで正しく設定されていれば、(ほとんどの場合) カスタム URL で自分でサービスを提供したりbase_url、フロントエンド側で自分で処理したりする必要はありません。

于 2015-07-01T01:09:00.217 に答える
-1

IPythonの内部をかなり掘り下げた後、私にとってうまくいくものを見つけました:

from IPython.config.loader import load_pyconfig_files
config = get_ipython().config
profiledir = config['ProfileDir']['location']
nbconfig = load_pyconfig_files(['ipython_notebook_config.py'], profiledir)
print nbconfig['NotebookApp']['base_url']

編集:これは私のインストールで機能しますが、カーネルがこの情報を取得するのに実際には適切な場所ではないことを理解しました。より良い回答が得られたら、おそらくこの回答を削除します。

于 2015-06-30T11:36:27.333 に答える