編集
残念ながら、現時点ではこれは不可能です。Spyderのバグであることがわかりました。開発者は、これにアプローチする方法をまだ考えています。
ゴール
コードのデバッグ中にデータを視覚化します (Spyder も使いたいです!)。
試行 #1: Spyder の IPython から foo.bar を実行する
次のコードを使用して、foo.py という名前のファイルを作成します。
from ipdb import set_trace as st import matplotlib.pyplot as plt def bar(): st()
IPython で、次のように入力します。
In [4]: import foo In [5]: foo.bar() --Return-- None > somewhere_over_the_rainbow\foo.py(5)bar() 3 4 def bar(): ----> 5 st() ipdb> plt.plot([1, 2], [3, 4]) [<matplotlib.lines.Line2D object at 0x05CA8E90>] ipdb> plt.show()
プロットは「凍結」状態のままです。デバッガーを終了すると、プロットが更新されます。プロットを閉じようとすると、IPython がクラッシュします。明らかに望ましくなく、デバッグ中にデータを見ることもできません。
試行 #2: コマンド ラインから IPython から foo.bar を実行する
- 試行 #1 と同じ foo.py を使用します。
コマンドラインから IPython を開きます。
In [4]: import foo In [5]: foo.bar() --Return-- None > somewhere_over_the_rainbow\foo.py(5)bar() 3 4 def bar(): ----> 5 st() ipdb> plt.plot([1, 2], [3, 4]) [<matplotlib.lines.Line2D object at 0x03904070>] ipdb> plt.show()
プログラムは、期待どおりにプロットを表示します。しかし、私はSpyderを使いたいです。
試行 #3: コマンド ラインから IPython から baz.bar を実行する
baz.py を書きます:
from ipdb import set_trace as st import matplotlib.pyplot as plt st()
コマンドラインから IPython を開きます。
In [4]: import baz --Return-- None > somewhere_over_the_rainbow\baz.py(4)<module>() 2 import matplotlib.pyplot as plt 3 ----> 4 st() ipdb> plt.
その後、スパイダーは完全にフリーズします。
助言がありますか?
注 #1 : 私の完全なコードには、多くのファイルと多くの関数があるため、関数を使用せずに 1 つのスクリプトにまとめることはできません。
注 #2 : matplotlib インタラクティブ コマンド (ion()、interactive(True) など) を使用しても効果はありませんでした。
注 #3 : Spyder バージョン 2.0.12、Python 2.6、matplotlib 1.0.1。