リモート PyCharm によるデバッグ
PyCharm を使用すると、Web サーバーや専用のテストマシンなど、他のコンピューターにあるインタープリターを使用してアプリケーションをデバッグすることができます。
PyCharm には、リモートでデバッグする 2 つの方法があります。
大 / 小文字 : リモートマシンで利用可能な拡張デバッグ機能を利用するためにこのアプローチを使います。
要件 : ローカルマシンからリモートサーバーへの SSH アクセス。
Python リモートデバッグサーバー設定を使用します。
大 / 小文字 : このアプローチを使用して、デバッグプロセスをリモートサーバー上の一連の実行プロセスに統合します。これは、デバッグのためにアプリケーションを明示的に実行できない場合、またはいくつかの準備が必要な場合に役立つ場合があります。
要件 : ローカルマシンからリモートサーバーへの SSH アクセス、リモートサーバーからローカルマシンへの事前定義ポートを使用したアクセス。
始める前に
次の準備作業を完了する
ローカルマシン上で、セクション Python プロジェクトを作成するに従って、純粋な Python プロジェクトを作成します。
このプロジェクトに Python ファイルを追加します(Alt+Insert - Python ファイル)。
次のコードを Python ファイルに追加します。
import math class Solver: def demo(self, a, b, c): d = b ** 2 - 4 * a * c if d > 0: disc = math.sqrt(d) root1 = (-b + disc) / (2 * a) root2 = (-b - disc) / (2 * a) return root1, root2 elif d == 0: return -b / (2 * a) else: return "This equation has no roots" if __name__ == '__main__': solver = Solver() while True: a = int(input("a: ")) b = int(input("b: ")) c = int(input("c: ")) result = solver.demo(a, b, c) print(result)
リモートインタープリター用のデプロイ構成の作成
この例では、アプリケーションを実行するマシンは local として参照され、リモートインタープリターを備えたマシンはリモートとして参照されます。
リモートインタープリターを設定する
リモートマシンへの SSH アクセスがあることを確認してください。
新しいリモートインタープリターを SSH を使用してインタープリターを構成する説明に従ってプロジェクトに追加し、リモートマシンに接続するための資格情報を指定します。
プロジェクト用のリモートインタープリターを作成すると、対応するデプロイ構成が作成されます。プレビューするには、Ctrl+Alt+S を押してローカルマシンで設定ダイアログウィンドウを開き、 に移動します。
すべてのデフォルト設定を受け入れるか、必要に応じて変更することができます。この例では、デプロイ構成の名前として MySFTPConnection を使用します。
ルートパス値が、作成された SSH インタープリターの対応する設定で指定されたパスを反映していることを確認してください。
Ctrl+Alt+S を押して設定を開き、すべて表示 ... を選択して、 をクリックします。選択したインタープリターの既存のパスがインタープリターのパスダイアログに表示されます。
に移動します。使用可能なインタープリターのリストを展開し、
これでデプロイの設定が完了しました。
アプリケーションをリモートホストにデプロイする
次に、アプリケーションをリモートホストにデプロイする必要があります。
メニューで を選択します。
ファイル転送ツールウィンドウが表示されます。転送されたファイルの数を確認します。
アプリケーションをデバッグする
エディターの背景を右クリックし、
(ここでは ) を選択します。デバッグ出力を確認します。デバッグは実際には指定されたリモートサーバー上で行われます。
Python リモートデバッグサーバー構成によるリモートデバッグ
専用の実行 / デバッグ構成、つまり実行 / デバッグ構成: Python デバッグサーバーを使用してリモートのデバッグを有効にすることもできます。
実行 / デバッグ構成を作成する
実行 / デバッグ構成ダイアログが開きます。ツールバーの をクリックし、使用可能な構成のリストから Python デバッグサーバーを選択します。
に移動します。この実行 / デバッグ構成の名前を入力します。MyRemoteServer とします。IDE が実行されているマシンのポート番号 (ここでは 12345) と IDE ホスト名 (ここでは 192.168.106.73) を指定します。これらのパラメーターは、リモートデバッグサーバーがアクセスするために使用されます。
パスマッピングフィールドで をクリックします。ローカルマシン上のパスをリモートマシン上のパスにマップします。
スクリプトの更新命令をインスペクションします。PyCharm インストール(<PyCharm directory>/debug-egg/pydevd-pycharm.egg)から pydevd-pycharm.egg を使用するか、pip を使用して
pydevd-pycharm
パッケージをインストールできます。選択に応じて、次の変更を実行します。
次のコマンドを実行して、リモートマシンに
pydevd-pycharm
パッケージをインストールします。pip install pydevd-pycharm~=<version of PyCharm on the local machine>
たとえば、
pip install pydevd-pycharm~=242.20224.428)
次のようにソースコードファイルを変更します。
import math #==============this code added==================================================================: import pydevd_pycharm pydevd_pycharm.settrace('192.168.106.73', port=12345, stdoutToServer=True, stderrToServer=True) #================================================================================================ class Solver: def demo(self, a, b, c): d = b ** 2 - 4 * a * c if d > 0: disc = math.sqrt(d) root1 = (-b + disc) / (2 * a) root2 = (-b - disc) / (2 * a) return root1, root2 elif d == 0: return -b / (2 * a) else: return "This equation has no roots" if __name__ == '__main__': solver = Solver() while True: a = int(input("a: ")) b = int(input("b: ")) c = int(input("c: ")) result = solver.demo(a, b, c) print(result)次のようにコードを変更します。
import math #==============this code added==================================================================: import sys sys.path.append("<PyCharm directory>/debug-egg/pydevd-pycharm.egg") import pydevd_pycharm pydevd_pycharm.settrace('172.20.208.95', port=12345, stdoutToServer=True, stderrToServer=True) #================================================================================================ class Solver: def demo(self, a, b, c): d = b ** 2 - 4 * a * c if d > 0: disc = math.sqrt(d) root1 = (-b + disc) / (2 * a) root2 = (-b - disc) / (2 * a) return root1, root2 elif d == 0: return -b / (2 * a) else: return "This equation has no roots" if __name__ == '__main__': solver = Solver() while True: a = int(input("a: ")) b = int(input("b: ")) c = int(input("c: ")) result = solver.demo(a, b, c) print(result)
SFTP 接続を作成する
リモートマシンで、ファイル quadratic_equation.py をアップロードするディレクトリを作成します。ターミナルウィンドウでそれを行うことができます:
$cd /tmp $mkdir pycharm_project_986ローカルマシンで、接続プロファイルを作成します。サーバーの追加ダイアログで接続タイプ (ここでは SFTP) を選択して、その名前 (ここでは MySFTPConnection) を入力します。
に移動し、開いたダイアログで をクリックし、接続タブで、そのマシンの SFTP ホスト(リモートマシンのアドレス)、ユーザー名、パスワードを指定します。
指定したユーザーは、リモートホストへの SSH アクセス権を持っている必要があります。
マッピングタブをクリックし、サーバーのデプロイパスを入力します。参照ボタンをクリックして、必要なフォルダー /tmp/pycharm_project_986 を選択します。参照ボタンにはリモートホストの内容が表示されることに注意してください。変更を適用してダイアログを閉じます。
リモートマシンにファイルをデプロイする
次のファイルをリモートマシンにデプロイします。pydevd-pycharm.egg と quadratic_equation.py。
ローカルマシンのプロジェクトツールウィンドウでファイルを選択し、選択した場所を右クリックしてデプロイ | MySFTPConnection にアップロードするを選択します。
ファイル転送ダイアログウィンドウを調べて、ローカルマシンからのファイルがリモートサーバーにアップロードされていることを確認します。
デバッグサーバーを起動する
作成した実行 / デバッグ構成を選択し、 をクリックします。
デバッグウィンドウにプロセス接続を待機しています ... メッセージが表示されていることを確認します。このメッセージは、リモートマシンでスクリプトを起動するまで表示され、このスクリプトはデバッグサーバーに接続します。
Python ファイルをリモートマシンで実行する
リモートマシンで、tmp/pycharm_project_986 ディレクトリに移動します。
リモートホストで quadratic_equation.py ファイルを起動します。これを行うには、「ターミナル」ウィンドウで次のコマンドを入力します。
$python3 quadratic_equation.py$python quadratic_equation.pyこのデバッグ方法の最も有用な点は、リモートデバッグがスケジュールされたタスクの一部であるとき、または Python スクリプトを実行する前にいくつかの準備ステップを実行する必要があるときに、bash スクリプトのいずれかを使用して Python ファイルを実行できることです。その場合、bash スクリプトの適切な場所に次の行を追加します。
cd /tmp/pycharm_project_986 python3 quadratic_equation.pycd /tmp/pycharm_project_986 python quadratic_equation.py
アプリケーションをデバッグする
ローカルマシンで、デバッグウィンドウに切り替えます。pydev デバッガーへの接続が表示されます。
コードは実際にはリモートホスト上で実行されますが、ローカルマシン上でデバッグされます。
要約
リモートインタープリターでデバッグするには、PyCharm を介してプログラムを開始する必要がありますが、これは常に可能とは限りません。一方、デバッグサーバーを使用する場合、実行中のプロセスに接続できます。
2 つのアプローチを比較してください。
最初のケース
後者の場合
デバッグ構成を作成しました(デバッグサーバー)。
リモートマシンで Python スクリプトを実行しました。スクリプトはデバッグサーバーに接続します。
ローカルマシンでスクリプトをデバッグしました。
関連ページ:
Python プロジェクトを作成する
純粋な Python プロジェクトは、Python プログラミングを対象としています。プロジェクトは、ソースコード、テスト、使用するライブラリ、個人設定を 1 つのユニットに整理できます。プロジェクトが不要な場合は、LightEdit モードでファイルを編集するか、プロジェクトを設定せずに Python ファイルを作成できます。プロジェクトを作成するには、次のいずれかを実行します。に移動します。ウェルカム画面で、新規プロジェクトをクリックします。、新規プロジェクトダイアログで、プロジェクト名とそ...
SSH を使用してインタープリターを構成する
SSH 経由でリモート Python インタープリターを構成する:PyCharm は ssh-sessions を介してリモートインタープリターを実行するため、リモートホストで SSH サーバーが実行されていることを確認してください。以下のいずれか 1 つを実行します:Python インタープリターセレクターをクリックして、新しいインタープリターを追加を選択します。を押して設定を開き、に移動します。利用可能なインタープリターのリストの横にあるインタープリターの追加リンクをクリックします。Pyt...
実行 / デバッグ構成: Python デバッグサーバー
リモートデバッグ構成を使用して、デバッグサーバーを起動します。詳細については、リモート PyCharm によるデバッグを参照してください。名前このフィールドには、現在の実行 / デバッグ構成の名前を指定します。スクリプトの更新このセクションには、リモートのデバッグの準備に必要な重要な情報が含まれています。PyCharm インストールから Python パスに pydevd-pycharm.egg を追加するか、実行します。サンプル: リモート PyCharm によるデバッグの手順の説明を参照してくださ...
プロジェクトツールウィンドウ
プロジェクトツールウィンドウを使用すると、さまざまな視点からプロジェクトを確認し、新しい項目 (ディレクトリ、ファイル、クラスなど) の作成、エディターでのファイルのオープン、必要なコードフラグメントへの移動などのさまざまなタスクを実行できます。このツールウィンドウのほとんどの機能には、コンテンツペインのコンテキストメニューコマンドとして、関連するショートカットを介してアクセスします。このビューには、作成されたスクラッチファイル、クエリコンソール、拡張スクリプトを管理できるスクラッチとコンソー...
デバッグツールウィンドウ
デバッガーセッションを開始すると、デバッグツールウィンドウが開きます。このウィンドウを使用して、デバッガーセッションを制御し、プログラムデータ (フレーム、変数など) を表示および分析し、デバッガーアクションを実行します。デフォルトでは、プログラムがブレークポイントに到達したときにデバッグツールウィンドウが開き、セッションが終了しても非表示になりません。この動作を変更するには、ビルド、実行、デプロイ | デバッガー設定ページに移動し、ブレークポイントでデバッグウィンドウを表示するチェックボック...
デバッグコンソールの使用
デバッグコンソールを使用すると、出力とエラーメッセージを表示できます。デバッグコンソールを開く:デバッグセッションを開始すると、PyCharm はデバッグコンソールを起動します。デフォルトでは、コンソールは対話型です。コード補完を使用してコマンドを実行できるプロンプトが表示されます。この動作を無効にするには、「デバッグコンソールを表示」をクリックします。デバッグコンソールで使用できるアクション:コンソールでは、次のことができます。コマンドを入力し、を押して実行します。結果は同じコンソールに