2013-07-17 14 views
7

ドキュメントによると、マクロを定義して保存できるはずです。次に、次回IPythonシェルを起動したときにマクロが利用可能になります。しかし、それは動作しません:私は再びIPythonシェルを起動するとIPythonでのマクロの保存

In [4]: print "Foobarbatbizbuzzbonk" 
Foobarbatbizbuzzbonk 

In [5]: %macro foo 4 
Macro `foo` created. To execute, type its name (without quotes). 
=== Macro contents: === 
print "Foobarbatbizbuzzbonk" 

In [6]: %store foo 
Stored 'foo' (Macro) 

In [7]: quit() 

、何のマクロ:これが動作しない理由を

In [1]: foo 
--------------------------------------------------------------------------- 
NameError         Traceback (most recent call last) 
<ipython-input-1-d3b07384d113> in <module>() 
----> 1 foo 

NameError: name 'foo' is not defined 

In [2]: %macro 
Out[2]: [] 

誰もが知っているんでしょうか?

答えて

7

この回答は、わかりやすい場所で見つけました。

まず、/ .ipython、それが言う$ HOMEで見つかったREADMEに「IPythonの設定の詳細については、実行します。ipython config -h」それは次のようなアドバイスを含め、ヘルプの束を作り出す行う

To initialize a profile with the default configuration file, do:: 

    $> ipython profile create 

and start editing `IPYTHONDIR/profile_default/ipython_config.py` 

大丈夫です。それをしました。さて、このファイルに入れる内容はConfiguring the ipython command line applicationです。しかし、この文書は%storeについて言及していません。軽量な永続化のための

%ストアマジック:拡張機能は、あなたが言うエントリstoremagicを、見つけることができますIPython、とバンドルの下

最後に、私は、設定およびカスタマイズに私の答えを見つけました。変数、別名 とIPythonのデータベースにマクロを格納します。起動時に自動的に保存された 変数を復元するには、あなたのipython_config.pyファイルに以下を追加:

c.StoreMagic.autorestore = True 

、それを追加IPythonを再起動し、強打!私のマクロがあります。クール!

4

ipythonの優れたドキュメントを見つけることは時として悪夢です(基本については)。このインタラクティブなコンソールは、プログラミングの本当の才能のために作られたようです。少なくとも、それは私が後部使用のための変数を保存するような単純な問題を解決しようとしたときに感じるものです...何かがMATLABでは単純ではありません。

しかし、あなたのqestionに答えるために...通常ちょうどipython入力しipython開き、それは元の名前(複数可)を使用してデータを回復する必要があり

-r%ストアを書いてみます。私はまだファイルに変数を格納したり、必要な変数をリカバリすることはできません。 BTw、あなたのストアド変数の名前を知るには、%storeとタイプしてください。

ご希望の場合はご利用ください。

+1

はい、これと同じです... docusは非常に読みにくいです:( – tim

7

シェルにマクロを定義して保存する代わりに、起動ファイルにマクロを定義するだけで済みます。例えば、次の行をIPYTHONDIR/profile_default/ipython_configに入れることができます。PY:私は魔法のコマンドのマクロを定義する方法を考え出したていない

get_ipython().define_macro('clr',"""get_ipython().magic(u'%reset -sf')"""); 

:あなたは魔法のコマンドのマクロを定義したい場合は

get_ipython().define_macro('foo','print "Foobarbatbizbuzzbonk"') 

、あなたはこのようなものを使用することができます引数を受け入れるオプション(例えば、ipythonのネームスペースでtmp.pyを実行するために、 '%run -i tmp'の代わりに 'rn tmp'をタイプするなど)を使用します。

+2

OPがマクロを永続化するように要求したので、これはより良い答えです。 '%store'は変数を永続化します – dirkjot

+1

この作業をするには、最初に 'ipython --init'を実行しなければなりません。これはあなたの個人的な設定(デフォルトプロファイル)を作成します。' ipython locate'を発行してあなたのIPYTHONDIRを探します。 – dirkjot

関連する問題