リモート 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 として参照され、リモートインタープリターを持つマシンは remote として参照されます。
リモートインタープリターを設定する
リモートマシンへの 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, stdout_to_server=True, stderr_to_server=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, stdout_to_server=True, stderr_to_server=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 スクリプトを実行しました。 スクリプトはデバッグサーバーに接続します。
ローカルマシンで スクリプトをデバッグしました。