Matlab から Python に移行しようとしています。Matlab の優れている点の 1 つは、デバッグ時にコードにブレークポイントを設定して、コマンド ラインからそのコードを呼び出すことができることです。PyCharm + IPython を使用すると、Python でこれを行う方法が見つかりませんでした。デバッグを行うには、単純なコマンドからではなく、スクリプト全体をデバッグ モードで実行する必要があるようです。興味のあるコマンドで1行のスクリプトを書くことができると思いますが、もっと良い方法があるはずです。これを行うPythonの方法は何ですか?
7 に答える
Pythonデバッガーを使ってみる
b(reak) [[filename:]lineno | function[, condition]]
また
pdb.set_trace();
より詳細なチュートリアルは、ここにあります。
Python Tools for Visual Studio の使用をお勧めします。それは無料でオープン ソースであり、Visual Studio 自体は明らかにオープン ソースではありませんが、商用利用が許可された無料で非常に機能的なバージョンの Visual Studio が付属する( 「PTVS 統合」 ) があります。さらに、ほとんどの学術機関の学生とスタッフは、Dreamsparkを介して Visual Studio Ultimate に無料でアクセスできます。
プログラムがブレークポイントで停止している場合は、"Python Debug Interactive" (tools->python tools から) を開くことができます。これにより、インタラクティブな Python シェルが開き、ブレークポイントでプログラムの名前空間で使用可能なすべての変数にアクセスできます。 Matlab でできるのと同じ方法です。
ソース コードでマウスを変数の上に置くと、値も表示されます。「ローカル」ウィンドウを表示すると、Matlab のワークスペース ビューアーを多かれ少なかれシミュレートできます。また、特定の変数を「監視」することもできます。このインターフェイスを介して変数を編集することが安全かどうかはわかりませんが、注意して使用してください!
残念ながら、PTVS にはネストされたブレークポイントがありません。これは、Matlab デバッガーの非常に便利な機能です。そのため、ブレークポイントで停止し、デバッグ インタラクティブ ウィンドウからメソッドを呼び出した場合、メソッド内のブレークポイントは機能しません。この関連する質問を参照してください。
デバッグ シェルでの矢印キー ベースのコマンド履歴は、Matlab や ipython に比べて非常に原始的であり、Intellisense はネイティブの .net 言語ほどではありませんが、ここ半年ほどはしっかりと使用しています。今では、優れたドキュメント以外に、Matlab から多くのことを逃しているようには感じません。
注意すべきもう 1 つのことは、デバッグ モードでのコード実行パフォーマンスが非常に遅いことです。そのため、最高のパフォーマンスを得るには、デバッグ モードなしで ("F5" の代わりに "Ctrl+F5" を使用して) コードを実行することをお勧めします。ブレークポイントと優れたパフォーマンスの両方が必要な場合は、新しい混合モード デバッガー。
Spyderを試しましたか??? これは、Matlab によく似たオープン ソースの IDE です。また、必要なデバッガーも提供します。 https://code.google.com/p/spyderlib/
PS: 私も python に移行していますが、無心で始めたいので、そのようなことは避けています。:)しかし、私はMatlabからNumpyのテキストまでたくさん読んでいます...
私は matlab と R から python に移行しました。いろいろなエディタを試してみましたので、アドバイスをお願いします。
1- Spyder は matlab に近いですが、あまり良くないというのが私の印象です。大量のデータを使用して長いシミュレーションを実行し始めると、クラッシュすることがよくあります。Python を初めて使用する場合は、これをしばらく使用してから別のものに移動することをお勧めします。
2- emacs python モード。非常にうまく機能します。私の意見では、設定が難しく、Python に慣れていない場合はおそらく最良の選択ではありません。
3-pycharm。私はpycharmを使い始めたばかりで、とても良いようです(これは私のRstudioを思い出させます)。これは、spyder や emacs 内のような対話型コンソールをサポートしているとは思いません。デバッグモードでも同様のものを取得できます
4- 多くの人が ipython ノートブックを愛用していますが、これは長いコードには適していないと思います。簡単に視覚化したい場合に適しています。
を使用しているとのことでしたのでipython
、 もご確認いただけますipdb
。
pip
またはを介して最初にインストールする必要がありeasy_install
ます。等:
pip install ipdb
使い方はpdbと同じです。ipython コンソールはipdb.set_trace()
、ローカル変数とグローバル変数をチェック/変更したり、それらのドキュメントとタイプをチェックしたり、着信関数のコードにステップインしたりできる場所からポップアウトします (「s」を使用すると、の定義に移動しますcode123()
) など。
import ipdb;
code000()
ipdb.set_trace();
code123()
また、?
ipython から機能を取得する方法に関するヒント (デバッガーでの関数とモジュールのドキュメントの取得に関して)。この答え。