這個 blog 只為記錄和梳理自己整個探索的流程,細節方面如有需要可以評論或者聯繫我,雖然估計也沒人看
-
在公司 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 填本地的,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",這個我也給順手勾選了,但這個選項到底是否搭嘎我也不知道。
Finally, it fucking works!