我正在尝试使用 docker-compose 解释器调试 django 项目。
这是我的pycharm配置
但是当我尝试调试它时,项目仍在运行,但调试器仍在等待连接并且断点不起作用
我认为我的项目结构有问题,因为我正在尝试调试其他项目,但它仍然有效。
这是我的项目结构
我做错了什么?
对于其他可能有帮助的人,我的例子中的问题是我尝试使用调试器以及在 Docker 容器功能内运行。
我还碰巧在该容器上发布了所有端口,这阻止了调试器连接。仅发布我实际需要的端口,解决了问题。
检查机器上的运行端口。就我而言,PyCharm 想要用于调试的端口 (127.0.0.1:xxxx) 正被我笔记本电脑上的另一个程序使用。
您可以在 mac 上使用以下命令检查正在运行的端口:
lsof -i -P | grep -i "listen"
或者,一旦您知道 PyCharm 正在尝试使用哪个端口(通常您可以在开始调试过程后在 PyCharm 的控制台选项卡顶部看到该端口),请执行以下命令:
sudo lsof -i :xxxxx
运行后,您应该看到一个包含 PID 号、程序名称等的列表。然后您可以使用 PID 终止该端口上正在运行的进程:
sudo kill -9 PID
或者,只需重新启动计算机即可。
如果这不起作用,则可能是由于使用了已经存在的 Python 模块名称。确保项目中的 Python 文件的名称与 Python 中的任何其他库/代码不同。
对我有帮助的是更改调试器端口。
前往
Settings > Build, Execution, Deployment > Python Debugger
。或者搜索设置Debugger port
。
默认为 29781。当您得到
Waiting for connection...
时,将端口更改为任何其他端口(例如 29782)并再次运行调试器。当它再次停止工作时,将其更改回 29781。需要时重复。
令人烦恼且远非理想的解决方案,但这里的其他答案对我不起作用。除了 PyCharm 本身之外,似乎没有其他应用程序在使用该端口。