Github: https://github.com/jupyter/nbviewer
ジュピターノートブックビューア
Jupyter nbviewerは、 Jupyterノートブックビューアの背後にあるWebアプリケーションです.Jupyter Notebook Viewerは 、 Rackspaceによって喜んでホストされています。
これをローカルで実行すると、自分のネットワーク上のnbviewerのほとんどの機能を利用できます。
Jupyterノートブックビューアの使用やインストールについてのヘルプが必要な場合は、 jupyter / helpの問題追跡ツールを使用してください。
クイックラン
docker
インストールされている場合は、現在構築されているバージョンのDockerコンテナーを
$ docker pull jupyter/nbviewer
$ docker run -p 8080:8080 jupyter/nbviewer
それは自動的に各プッシュで構築されてmaster
になるので、常に最新のコピーを取得することができます。
GitHubへのスピードと使いやすさのために、 GITHUB_OAUTH_KEY
とGITHUB_OAUTH_SECRET
を設定してGITHUB_OAUTH_SECRET
:
$ docker run -p 8080:8080 -e 'GITHUB_OAUTH_KEY=YOURKEY' \
-e 'GITHUB_OAUTH_SECRET=YOURSECRET' \
jupyter/nbviewer
または、GitHubの個人用アクセストークンを使用するには、 GITHUB_API_TOKEN
だけを設定しGITHUB_API_TOKEN
。
GitHubエンタープライズ
自分のGitHub Enterpriseインスタンスでnbviewerを使用するには、GITHUB_API_URLを設定する必要があります。 GitHub Enterpriseの関連するAPIエンドポイントには、 http://hostname/api/v3
接頭辞が付きhttp://hostname/api/v3
。 上記で説明したようにOAUTH
またはAPI_TOKEN
も指定する必要があります。 例えば:
$ docker run -p 8080:8080 -e 'GITHUB_OAUTH_KEY=YOURKEY' \
-e 'GITHUB_OAUTH_SECRET=YOURSECRET' \
-e 'GITHUB_API_URL=https://ghe.example.com/api/v3/' \
jupyter/nbviewer
これにより、すべてのGitHub APIリクエストがエンタープライズインスタンスに送られ、内部ノートブックをすべて表示できます。
ローカル開発
ドッカーと
ローカルブランチを使用するドッカーイメージを構築することができます。
ビルド
$ cd <path to repo>
$ docker build -t nbviewer .
走る
$ cd <path to repo>
$ docker run -p 8080:8080 nbviewer
ドッカーで作成
Notebook Viewerは本番memcached
でmemcached
を使用します。 この設定をローカルで試してみるには、現在のブランチからnbviewer
とmemcached
コンテナを簡単に開始/停止するためのnbviewer
-compose設定が用意されています。 この前にdocker
をインストールする必要があります。
走る
$ cd <path to repo>
$ pip install docker-compose
$ docker-compose up
ローカルインストール
ノートブックビューアでは、システムに複数のバイナリパッケージをインストールする必要があります。 主なものはlibmemcached-dev libcurl4-openssl-dev pandoc libevent-dev
です。 パッケージ名はシステムによって異なる場合があります。詳細については 、 salt-statesを参照してください。
それらがインストールされている場合は、必要なPythonパッケージをpip経由でインストールできます。
$ cd <path to repo>
$ pip install -r requirements.txt
静的資産
静的資産は、 bower
less
( npm
インストールする必要があります)およびinvoke
pythonモジュールで維持されます。
$ cd <path to repo>
$ pip install -r requirements-dev.txt
$ npm install
$ invoke bower
$ invoke less [-d]
関連する資産をnbviewer/static/components
ダウンロードし、 nbviewer/static/build
資産を作成します。
-d
または--debug
を指定してinvoke less
をinvoke less
、CSSソースマップを作成します。これはデバッグに便利です。
ローカルで実行する
$ cd <path to repo>
$ python -m nbviewer --debug --no-cache
これは、Pythonファイルで変更が検出され、結果をキャッシュしない場合、サーバーを自動的に再起動します。 ソースコードやテンプレートのような変更を加え、ページを更新することができます。
テストの実行
テストスイートを実行するためにnose
が使用されます。 テストでは現在、GitHubなどの外部APIが呼び出されています。そのため、Github APIトークンを使用することをおすすめします。
$ cd <path to repo>
$ pip install -r requirements-dev.txt
$ GITHUB_API_TOKEN=<your token> python setup.py test
ノートブックビューアの拡張
プロバイダー
プロバイダは、ノートブックのソースであり、ノートブックやディレクトリのディレクトリです。
nbviewer
は複数のプロバイダが付属しています
-
url
-
gist
-
github
-
local
新しいプロバイダの作成
すでに提案/要求されている追加のプロバイダがいくつかあります。 一部のプロバイダは他のプロバイダよりも関与しており、ユーザー認証を必要とするプロバイダなど、一部のプロバイダは適切にサポートするためにいくつかの作業を行います。
プロバイダはPythonモジュールとして実装されています。これはいくつかの関数を公開します:
uri_rewrites
別のサイト/名前空間のURL(またはURI)を書き換える必要がある場合は、フロントページが任意の文字列(通常はURIフラグメント)を変換して正しくエスケープし、それを “正規の”文字列に変換するuri_rewrites
実装します。 nbviewer URL。 カスタムAPIクライアントを使用せずにURLを書き換える簡単な例については、 Dropboxプロバイダを参照してください。
default_handlers
APIへの接続など、カスタムロジックが必要な場合は、 default_handlers
実装します。 複数のハンドラを提供する複雑な例については、 githubプロバイダを参照してください。
エラー処理
上流のHTTPエラー処理を再実装することはできますが 、HTTPエラーを傍受するための小さな便利な方法が用意されています。 BaseHandler
から継承したURLハンドラで、 BaseHandler
をオーバーロードし、メッセージ(またはNone
)で再呼び出しします。 エラーメッセージをカスタマイズする例については、 gistプロバイダを参照してください。
フォーマット
フォーマットは、ノートブックをユーザーに提示する方法です。
nbviewer
は3つのプロバイダが付属しています。
-
html
-
slides
-
script
新しい書式を書く
新しい書式を書いたり、チケットを開いたり、[gitter] []に話しかけてみたい! 私たちは、ノートブック出版であなたの次なる大きな問題をサポートするためにまだやっていない仕事があります。私たちはここからあなたを愛しています。
ノートブックビューアを保護する
ビューアをJupyterHub 0.7+サービスとして実行できます。 ビューアをサービスとして実行すると、ハブで認証されていないユーザーはnbviewerインスタンスにアクセスできなくなります。 この設定は、– --localfiles
オプションでレンダリングされたローカルノートブックへのアクセスを保護するのに便利です。
jupyterhub_config.py
に次のようなエントリを追加して、管理対象サービスとしてnbviewerを起動させます。
c.JupyterHub.services = [
{
# the /services/<name> path for accessing the notebook viewer
'name': 'nbviewer',
# the interface and port nbviewer will use
'url': 'http://127.0.0.1:9000',
# the path to nbviewer repo
'cwd': '<path to repo>',
# command to start the nbviewer
'command': ['python', '-m', 'nbviewer']
}
]
nbviewerインスタンスは、 さまざまなJUPYTERHUB_*
環境変数を自動的に読み取り、それに応じて構成します。 外部的に管理されたJupyterHubサービスとしてnbviewerインスタンスを実行することもできますが、必要な環境変数を自分で設定する必要があります。