关于Python38中调试PyQt5时import PyQt5.QtCore报错(ImportError: DLL load failed)的问题分析

Python更新到了Python38,有一个非常好的更新,统一了Debug与Release模式下的ABI,也就是说在C/C++中嵌入Python时,可以直接在Debug模式下用Release的Python了,果断考虑从Python37更新到Python38。想当初为了调试在Debug模式下的C/C++&Python混合代码,把Python的模块都编译了个遍~~~~。

然而事情往往总是不会一帆风顺,在把代码移植后,本以为会执行得很好的代码报错了:

ImportError: DLL load failed while importing QtCore: 找不到指定的模块。

思考:这份代码在Python37下运行正常,会是什么原因呢?

1、dll系统搜索路径不对

加path解决,无效,看来不是这个原因导致的。

2、试试执行python3.exe 再执行import PyQt5.QtCore会不会报错

没有报错,但是仍然不知道是什么原因导致的。

3、将程序拷贝到Python目录,直接运行

没有报错,看到了成功的希望,但是这个不是解决问题的办法,还得继续找原因。

4、vs以调试模式运行拷贝到python目录的程序

仍然运行正常,还是对问题未知。(此时已一头雾水)

5、用DEPENDS.EXE分析QtCore.pyd对库的依赖,在执行import PyQt5.QtCore之前将这些依赖调用LoadLibraryA加载

过程中加载了Qt5Core.dll、Python3.dll、sip.cp38-win32.pyd,能正常运行

尝试只加载Python3.dll,依然能正常运行,此时貌似在程序运行前执

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值