背景:
端午节回来上班第一天,不想干活,领导又再后面看着,突然想起一个有意思的问题,为啥我的程序在子进程QThread的子类里打的断点不好用呢?那就解决一下这个问题吧。
原因:
如果您的解释器上安装了多个与PyQt兼容的后端,默认情况下,会启用自动搜索选项,这意味着将使用最先找到的后端。
启动debug是会看到:
/Applications/PyCharm CE.app/Contents/plugins/python-ce/helpers/pydev/pydevd.py --multiprocess --qt-support=auto --client 127.0.0.1 --port 54370 --file
我pip3.9 list 查看了下与PyQt兼容的后端,找到如下几个。
PySide2 PyQt5 QtPy
解决:
方法1:只保留PyQt5,删除额外的库,如果需要保留额外的库,可以考虑使用venv。
pip3.9 uninstall PySide2
pip3.9 uninstall QtPy
方法2:setting environment variable PYDEVD_PYQT_MODE to 'pyqt4', 'pyqt5' or 'pyside'.
Since PyCharm 2017.1.1 you can define PyQt backend for deb