このブログは、自分の探索のプロセスを記録し整理するためのものです。詳細については、コメントするか私に連絡してください。おそらく誰も見ていないと思いますが。
-
会社の JetBrains 公式サイトが禁止されている状況で、Pycharm 2025.1.2 をダウンロードし、プロ版をアクティブにする。
-
ローカルとリモートファイルの同期を保証する。
pycharm->deployment で一度で済む。 -
リモートコンテナ内の py インタプリタを使用する。
多くのライブラリがコンテナイメージにインストールされているため、pycharm では ssh を使ってコンテナに接続し、コンテナ内の py インタプリタを使用できます。コンテナ内のインタプリタに接続するには、コンテナ内に sshd をインストールする必要があります。
yum install install openssh-server
vim /etc/ssh/sshd_config(PermitRootLogingをyesに変更)
/usr/sbin/sshd -D &
実際、このステップまで来れば、単一ファイルのリモートデバッグが可能です。Pycharm の Run/Debug には current file のデバッグモードがあり、ブレークポイントを設定すればブレークポイントデバッグができます。
- プロジェクトのリモートブレークポイントデバッグ
pydevd-pycharm~=251.26094.141 をインストールします(具体的なバージョンは、python debug server の edit configurations を開くと通知されます)。
pydevd-pycharm·PyPIから tar.gz をダウンロードし、tar -zxvf で解凍し、python3 setup.py install でインストールします。最後に pip3 list で確認できます。
プロジェクトコードのエントリにコードを追加し、ip にはローカルの IP を、port は衝突しない任意の番号を入力します。
import pydevd_pycharm
pydevd_pycharm.settrace('1.2.3.4', port=50010, stdoutToServer=True, stderrToServer=True)
最初にローカルの python debug server を起動します。「Waiting for process connection...」と表示されるので、その後にリモートプロジェクトを起動します。ここでは uwsgi --ini platform.ini を使用しており、uwsgi は wsgi.py ファイルを呼び出します。私の import pydevd_pycharm はこのファイルの先頭に追加されています。
しかし、最終的に問題に直面しました。wsgi.py ファイルではブレークポイントデバッグが可能ですが、その後 http リクエストを発起した際に url 処理関数で停止しませんでした。問題の現れ方は、リクエストがブレークポイントで止まっているように見えますが、実際には pycharm も捕まえていません。おそらく uwsgi の設定が多プロセスで高い同時リクエストを処理するようになっているためです。その後、uwsgi の設定を次のように変更しました。
[uwsgi]
http=0.0.0.0:9000
processes = 1
threads = 1
master = false
vacuum=true
enable-threads=true
chdir=/xx/xxx
module=xxxx.wsgi
python debug server をちらっと見たところ、「allow multiple instances」というオプションがあり、これもチェックしましたが、このオプションが本当に関係しているかはわかりません。
最後に、うまくいきました!