2013-04-24 9 views

答えて

12

ipdb Github repoによると、魔法のIPython関数は利用できません。幸いにも、IPython debuggerは、別個のIPythonシェルを起動せずにこの機能を取得する方法の手がかりを提供します。ここで

は私が%cpasteを実行するためにやったことです:

ipdb> from IPython import get_ipython 
ipdb> shell = get_ipython() 
ipdb> shell.find_line_magic('cpaste')() 
Pasting code; enter '--' alone on the line to stop or use Ctrl-D. 
:for i in range(0,5): 
:  print i 
:-- 
0 
1 
2 
3 
4 

この方法では、あなたのコードをステップとする方法find_line_magic(your_magic_function)を経由して、すべてのIPythonの魔法の機能にアクセスすることができます。

+0

ipdbのコンテキスト(例えば、ローカル変数)を 'cpaste'に渡すことはできますか? –

9

pdbのように、スタック内にIPythonシェルを開くことができます。次の手順を実行します。

  • IPythonからembed()をインポートし、コード内に配置します。
  • スクリプトを実行し

例:Pythonのシェルで

from IPython import embed 

def some_func(): 
    i = 0 
    embed() 
    return 0 

>>> te.func() 

IPython 1.0.0 -- An enhanced Interactive Python. 
(...) 

In [1]: %whos 

Variable Type Data/Info 
i   int  0 

In [2]: 

は、あなたが探していたものということでしたか?

+1

私は自分のコードで任意のIPython関数をインポートせずにマジック関数を使いたいと思います。 – fossilet

+0

なぜですか?それは単に個人的な利便性の問題ですか? – gg349

+1

@flebool、私のプログラムがブレークポイントをプログラムに記述することなく、デバッガによって私のプログラムが停止(中断)されたときはいつでも、魔法の機能にアクセスすることは非常に便利です。 – fossilet

関連する問題