PyQt5 PyCharm 无法智能提示和跳转,出现“cannot find declaration to go to”错误

一、问题描述:

最近在使用 PyQt5 时,发现程序可以正常运行,但 PyCharm 中关于 PyQt 的代码无法智能提示和跳转,出现“cannot find declaration to go to”错误

 

二、出错环境:

  1. 完全重装了 Python 和 Pycharm
  2. 项目代码在之前其它电脑的环境中正常,可正常跳转
  3. 我使用的是 pipenv 虚拟环境,项目的依赖包和环境是独立的,并且换环境后依赖 Pipfile 可恢复原始环境

 

三、排除过程:

网上百度了一大堆,国内的国外的都看了,主要有以下几个解决办法(最后都对我无效):

1、项目工程的 “Python Interpreter” 未正确配置

排除:如果还有这种低级的错误就不要上来百度了,先把基本功打扎实

2、File Types 中的 Text 要排除掉 __init.py__文件

检查:完全重装的环境和软件,不存在这个问题

3、把工程目录设置为 根目录:

检查:代码一直在用,也不存在这个问题

 

四、解决思路:

既然上面的方法都试过了解决不了问题,那么就从根源上排查解决

  1. 回到之前电脑上的环境,进入 PyQt 相关代码,测试一下跳转,看代码最终跳转到了哪里,结果是跳转到 Pycharm 缓存目录下几级的一个叫 python_stubs 目录:C:\Users\XXX\AppData\Local\JetBrains\PyCharmCE2020.3\python_stubs\-1263808890
  2. 这里有个目录 叫 PyQt5 ,这下面存放了相关的代码,原来是在这里啊。事后得知这是伪代码:当我们调用的函数是内置函数或仅二进制存在的函数(没有py文件,只有pyc)时,pycharm会对某个版本进行硬编码而生成的伪函数(实际不是调用的这个,只是方便我们做开发)
  3. 为什么出错的环境上没有这份代码呢?检查 Pipfile 中并没有 pyqt5-stubs 相关项,只有PyQt5 和 PyQt5-tools。换环境后,pycharm 也提示了我安装,但并没有生效,不知道这个工具是不是有BUG

 

五、最终解决办法:

有了以上分析,解决办法就很简单了,使用 pip 命令行安装 pyqt5-stubs 即可

pipenv install pyqt5-stubs 

因我的环境是虚拟环境故使用 pipenv ,你们只需用 pip 即可

 

六、验证:       

  1. 新环境中,python_stubs 目录下也有了 PyQt5 相关代码(Pipfile 也有了"pyqt5-stubs")
  2. Pycharm 的项目工程“Python Interpreter”中也有了这个包,如下图
  3.  

  4. 问题最终解决,代码可跳转,也有代码提示失。
  5. 回到原先的环境中, pyqt5-stubs 只是辅助代码编写,项目运行并不依赖,故并不打包在 Pipfile 中,项目换环境时,它理所当然会丢

七、反思:

  1. 不要过分相信 IDE工具,自己一行一行配置的最为可靠
  2. 以后做工程项目时,把每一个依赖的库都配置到 Pipfile 中,确保不会出问题。主环境中尽量不要有残余依赖包,否则当回不到原先环境时,对比的对象都没有
  3. 学会从源头上找问题,盲目尝试效果甚微。

尊重原创成果,转载请注明出处:https://blog.csdn.net/MahoneSun/article/details/115385098

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值