3

優れた ipython ノートブックには、ノートブックのコピーをスクリプト ファイル--scriptとして自動的に保存する (ヘッダーとマークダウン セルを削除する) 便利なコマンド ライン フラグがあります。.pyノートブックを開いた後、ノートブック自体からこの機能をオンにする方法はありますか? どうやら、このオプションは%config魔法にアクセスできません。

この変換を行うセルを持つ方法はありますか? 変換を行うために使用できるコマンドライン ツールはありますか?それをノートブックからシェル コマンドで実行するだけです。(nbconvert は に出力しないよう.pyです。)

私が尋ねる理由は、ノートブックの git リポジトリがあり、ファイルはノートブックの内容から C++ コードを作成するために使用される.pyため、ユーザーがノートブック自体を変更したときにファイルが最新の状態に保たれていることを確認する必要があるためです。しかし、ユーザーは常に忘れてしまうため.py、ユーザーがフラグを設定することに頼ることはできません。--script(そして、私自身もそのユーザー グループに含まれます。)

4

2 に答える 2

3

いっそのこと(少なくとも私の目的のために):ipythonはipython_notebook_config.pyファイルのローカルコピーを尊重します。だから私はちょうど追加することができます

c = get_config()
c.NotebookManager.save_script = True

私のノートブックディレクトリのそのようなファイルに。どうやら、ipython は最初に を読み取り~/.ipython/profile_default/ipython_notebook_config.py、次にそのファイルのローカル コピーを読み取ります。そのため、ユーザー設定の破棄を心配することなく安全に使用できます。

これはドキュメントからはまったくわかりませんでしたが、試してみただけでうまくいきました。

于 2013-09-28T15:44:11.883 に答える
0

おー。私の間違い。 スクリプトへの変換を処理nbconvert できます。だから私はこのようなことができます:

!ipython nbconvert --to python MyNB.ipynb

もちろん、この行はスクリプトに保存されます。つまり、スクリプトは実行されるたびにノートブックをそれ自体に再保存しようとします。それは少し循環的であり、私のより風変わりなハックのいくつかで問題を引き起こす可能性があると想像できます. 代わりに、次のようにラップすることで、ipython からのみ実行されるようにすることができます。

try :
    if(__IPYTHON__) :
        !ipython nbconvert --to python MyNB.ipynb
except NameError :
    pass

!変換プロセスは、構文を単純な python で受け入れられるものに自動的に変換することに注意してください。これは明らかに--script変換には当てはまりません。したがって、これを行うための非常に安全な方法は

try :
    if(__IPYTHON__) :
        get_ipython().system(u'ipython nbconvert --to python MyNB.ipynb')
except NameError :
    pass
于 2013-09-28T14:25:10.840 に答える