web-dev-qa-db-ja.com

pycharmを使用した対話型シェルデバッグ

私はPyCharmが初めてです。私は長い間IDLEを使用しています。

IDLEでスクリプトを実行した後にPythonオブジェクトを使用すると非常に便利です。 PyCharmを使用してインタラクティブpythonシェルで実行した後にスクリプトオブジェクトを使用する方法はありますか?

たとえば、「test.py」という1つのファイルを持つ「test」プロジェクトがあります。

a = '123'
print a

実行後、結果を取得できます。

123
Process finished with exit code 0

対話型シェルで文字列「a」を使用するにはどうすればよいですか?

72
user1941407

ビルトインpython現在のデバッグセッション用のシェル

  1. コードの対象行にブレークポイントを設定し(つまり、Gutterをクリックして)、デバッグを起動します(エディターを右クリックして、Debug myfile.py ...を選択します。 )。
  2. ブレークポイントに到達したら、Debug>Consoleタブを見つけ、Showをクリックしますコマンドラインアイコン(スクリーンショットを参照)。

これにより、python Shell(緑色の>>>は、現在のスコープ内のすべての変数にアクセスでき、通常はPython Shellで行います。

最近のpycharmバージョンでは、プレーンpython Shell(ipythonがインストールされている場合)ではなく、完全なipythonインタープリターを取得します。

Enabling Python Shell for the debugged app

Evaluate expressionウィンドウ

より快適な代替方法として、一部の変数の検査、スコープ内のオブジェクトのメンバーへのアクセス、またはメソッドの呼び出しのみが必要な場合、ブレークポイントに到達したら、現在のスコープ内の式を選択し、右クリック-> Expressionを評価します(または、メニューの下に表示されるホットキーを使用します Run → Evaluate Expression...)、必要に応じて編集します—anypython expression、auto-completion available with)を入力して、を押しますEnter(またはEvaluate)をクリックして結果を検査します。

複数行および複数行の式がサポートされています:Inspectダイアログの複数行バージョンを取得するには、Code fragment modeをクリックするか、エディターで複数行のコードを選択してから式を評価します。既存の変数に値を割り当て(新しい変数を定義することはできません)、コードのチャンク全体を実行できます。 inspecting variables in the current scope

マウスを変数の上に置く

デバッグモードでブレークポイントをヒットした後に変数の値を表示するには、マウスポインターを変数の上に置いて(1〜2秒)、値がツールチップに表示されます。

enter image description here

ヒントには  アイコン—クリックすると、インスペクターがポップアップで開きます。

enter image description here

スコープ内の変数の場合、インスペクターは下部パネルのDebug>Debuggerの下に表示されます。

pandas データフレームの場合、変数インスペクターにView as DataFrameリンクが表示されますパネルまたはホバーポップアップ-リンクをクリックすると、 データビューパネルのデータフレームとして表 が表示されます。

107
ccpizza

Piga-fetta、Games Brainiac、kobejohnからの以前の回答を見つけました有用ですが、満足できないそこで、ここで3番目のオプションを提供します。

選択したコードをコンソールにロードする(私の提案)

つかいます Shift + Alt + E 選択したコードまたはカーソルが置かれている行をコンソールにロードして、すぐに実行します。これにはいくつかの欠点もあります。

  • ファイル全体を実行する必要がある場合は、ファイル全体を選択する必要があります。
  • エラーが発生しても、コードは実行され続けます。

しかしその見返りに、IDLEよりも優れた機能が得られます(私の意見では)。一度に1つの選択だけでコードを実行できます。

それについて読む こちら

ブレークポイントの使用と式の評価(Alt-F8(ピガフェッタが提案)

これは、コード内の特定の場所でデバッグする必要がある大きなアプリケーションでは非常に便利ですが、インタラクティブなコーディングにはあまり役立ちません。したがって、これは私たちが望むものではありません。

ツールの使用->実行Python Console(Games Brainiacとkobejohnが推奨)

これは私たちが望んでいることですが、特に実行したいモジュールがプロジェクトのルートディレクトリにない場合は少し面倒です。

19
elgehelge

Python ConsoleをPyCharm 2とPyCharm 3の両方で使用できます。プロジェクトルートが既にPYTHONPATHに追加されているので、簡単にインポートできます。

そのため、スクリーンショットをいくつか示します。

1.ルートディレクトリにconsole.pyファイルを作成する

enter image description here

2. Python PyCharm内のコンソールを開く

enter image description here

3. console.pyファイルから変数をインポートする

enter image description here

そして、変数が正常にインポートされました。

11
Games Brainiac

実行後にコマンドラインを開いたままにします

この問題が解決しない場合:[実行/デバッグ]メニューに移動し、[構成の編集]を選択し、[コマンドラインの表示]チェックボックスをオンにします。

Change setting for current file only

グローバル構成

この変更をすべての.pyファイルに適用するには(このチェックボックスは作業中の現在のファイルにのみ適用されます)に移動します:構成の編集、ポップアップで左側にメニューツリーが表示され、デフォルトを選択します、次にPython、[コマンドラインの表示]チェックボックスをオンにすると、.pyファイルを開くたびにデフォルト設定になります(この機能はデフォルトで実際にオンになっているはずです!)

Change setting for all Python files

10
Rampkins

私は最良の答えを見つけました: 実行後のプログラムとの対話

以下の答えを引用:

++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++

python --help:の出力から

-i:スクリプトの実行後に対話的に検査します。 stdinが端末ではない場合でも、プロンプトを強制します。 PYTHONINSPECT = xも

PyCharmでインタープリターオプションを設定するには、[実行|構成の編集]に移動します

++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++

私はそれを試してみましたが、動作します-単に「-i」(引用符なし)を「インタープリターオプション」として使用します。 [実行/デバッグ構成]の[デフォルト]のみを変更した場合、以前に実行したスクリプトにはすぐに反映されない場合があることに注意してください。これらのスクリプトの構成を1つずつ編集する必要があります。

6
user3308189

上記には言及していません:

実行中に変数を使用する場合ブレークポイントを設定し、現在のスコープ内のオブジェクトで関数を呼び出して実験すると、PyCharmには「式の評価(Alt-F8)」ポップアップウィンドウがあります。

このウィンドウでは、関数を呼び出して出力を確認できます。コード補完も機能します。このウィンドウには「コードフラグメントモード」もあり、それが何を意味するのかを調査中です。ここで一時的な関数を定義できますか。

(私はPyCharm 3.0.1 Community Editionを使用しています)

4
Piga-fetta

*更新

あなたの更新から、私は this SO question少なくとも1つの完璧な答え を提供すると思います。

ここに、私がリンクした回答よりも少しずつ、それを書きましょう。

  • ツール->実行Python Console
  • スクリプトをインポートします_import myscript_(.pyなし)(短い名前が必要な場合は、_import myscript as m_を使用します
  • (_if __== '__main__'_ブロックがある場合、main()を実行する必要があるかもしれません)
  • あなたの質問のように、aは_myscript.a_で利用可能です
  • 必要に応じて、myscript = reload(myscript)を使用してスクリプトを再度実行します

*元の

PyCharm 3.0では、次のことができます。

  • ツール->実行Python Console
  • ツール->ターミナルを開く(そこからpythonまたは何でもできます)

それはあなたが探しているものですか?そうでない場合は、試してみて、それがあなたが望むものとどのように異なるかを教えてください。

2
KobeJohn

Ramkins's answer での提案に加えて、ファイル内を右クリックしてRun File in Consoleを選択すると、コンソールで直接ファイルを実行できます。

0
dexgecko

さらに別の方法は、Spyderがスクリプトを「インタラクティブに」実行するために使用するのと同じコマンドを単に使用することです。

>>> runfile('myscript.py')

その後、対話型コンソールの変数エクスプローラーを開き、上記のコマンドを再度実行してスクリプトを再実行できます。 Spyderワークフローに非常によく似ています。上記の他のすべての方法では、対話型コンソールプロンプトが表示されますが、変数エクスプローラーを開くオプションは表示されません。そのような機能を探している場合は、上記を試してください。

0
arkore