48

私は IPython を使用しており、あるノートブックから別のノートブックから関数を実行したいと考えています (異なるノートブック間でカット アンド ペーストする必要はありません)。これは可能であり、合理的に簡単に行うことができますか?

4

10 に答える 10

24

IPython 2.0 では、ノートブック間でコードを簡単%run 'my_shared_code.ipynb'に共有できます。たとえば、http://nbviewer.ipython.org/gist/edrex/9044756を参照してください。

于 2014-02-17T21:30:08.263 に答える
4

また、セルのコンテンツをファイルに書き込み (そして古いコンテンツを置き換える -> コードを更新)、別のノートブックにインポートできる "書き込みと実行" 拡張機能もあります。

https://github.com/minrk/ipython_extensions#write-and-execute

1 つのノート (2 つのセル) で

%reload_ext writeandexecute
--
%%writeandexecute -i some_unique_string functions.py
def do_something(txt):
    print(txt)

そして、他のノートブックで:

from functions import do_something
do_something("hello world")
于 2015-07-02T14:20:40.563 に答える
3

qtconsole を使用して同じカーネルに接続できます。起動時にこれを指定するだけです:

ipython qtconsole --existing kernel-0300435c-3d07-4bb6-abda-8952e663ddb7.json

長い文字列のノートブックを起動した後の出力を見てください。

于 2013-06-06T15:56:20.080 に答える
1

私は他のノートブックからノートブックを呼び出します。次のトリックを使用して、「パラメーター」を他のノートブックに渡すこともできます。

"report_template.ipynb"の最初のセルにparams辞書を配置します。

params = dict(platform='iOS', 
              start_date='2016-05-01', 
              retention=7)
df = get_data(params ..)
do_analysis(params ..)

そして、別の (より高い論理レベルの) ノートブックで、次の関数を使用して実行します。

def run_notebook(nbfile, **kwargs):
    """
    example:
    run_notebook('report.ipynb', platform='google_play', start_date='2016-06-10')
    """

    def read_notebook(nbfile):
        if not nbfile.endswith('.ipynb'):
            nbfile += '.ipynb'

        with io.open(nbfile) as f:
            nb = nbformat.read(f, as_version=4)
        return nb

    ip = get_ipython()
    gl = ip.ns_table['user_global']
    gl['params'] = None
    arguments_in_original_state = True

    for cell in read_notebook(nbfile).cells:
        if cell.cell_type != 'code':
            continue
        ip.run_cell(cell.source)

        if arguments_in_original_state and type(gl['params']) == dict:
            gl['params'].update(kwargs)
            arguments_in_original_state = False

run_notebook("report_template.ipynb", start_date='2016-09-01')

このコマンドは、「report_template」ノートブックの各セルを実行し、2 番目のセルから始まるparamsディクショナリの関連キーをオーバーライドします。

于 2016-09-29T08:54:02.670 に答える