GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

jupyter

nbviewer – webserviceとしてのNbconvert(静的HTMLへのipynbのレンダリング)

投稿日:

webserviceとしてのNbconvert(静的HTMLへのipynbのレンダリング) https://nbviewer.jupyter.org

ジュピターノートブックビューア

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_KEYGITHUB_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は本番memcachedmemcachedを使用します。 この設定をローカルで試してみるには、現在のブランチからnbviewermemcachedコンテナを簡単に開始/停止するための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 lessnpmインストールする必要があります)および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 lessinvoke 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インスタンスを実行することもできますが、必要な環境変数を自分で設定する必要があります。







-jupyter
-

執筆者: