2

次のような単純な関数をユーザー名前空間に含めた古い ipy_user_conf.py がありました。

import IPython.ipapi
ip = IPython.ipapi.get()

def myfunc():
   ...

ip.user_ns['myfunc'] = myfunc

次に、プロンプトで myfunc を使用できます。

しかし、IPython 0.12.1 に更新したところ、ip_user_conf.py が機能しなくなりました。このようなプロンプト用のカスタム関数を新しい構成モデルに変換する方法を見たことがありません。

これを行う方法はどれですか?

よろしく、マヌエル。

更新:件名を質問に変更しました

4

1 に答える 1

2

ドキュメントを少し読んだ後 (そしてリードのソース コードを覗いた後)、この問題の解決策を見つけました。

ここで、すべてのカスタム関数を.ipythonディレクトリ内のモジュールに移動する必要があります。私が行っていたのは現在のディレクトリの git ブランチとステータスを返す単純な関数だったので、というファイルを作成し、構成オプションgitprompt.pyにファイル名を含めました。exec_file

c.InteractiveShellApp.exec_files = [b'gitprompt.py']

このようなファイル内のすべての定義は、ユーザー名前空間に配置されます。これで、プロンプト内で使用できます。

# Input prompt.  '\#' will be transformed to the prompt number
c.PromptManager.in_template = br'{color.Green}\# {color.LightBlue}~\u{color.Green}:\w{color.LightBlue} {git_branch_and_st} \$\n>>> '

# Continuation prompt.
c.PromptManager.in2_template = br'... '

関数がそのように動作する (つまり、プロンプトが出力されるたびに呼び出される) ためには、IPython.core.prompts.LazyEvaluationクラスを使用する必要があることに注意してください。関数のデコレータとして使用できます。gitprompt.py要点としてパブリックドメインに配置されています: https://gist.github.com/2719419

于 2012-05-17T14:48:16.973 に答える