这个 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!