前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[Python] ImportError: DLL load failed … 找不到指定的模块 此类问题解决方法

[Python] ImportError: DLL load failed … 找不到指定的模块 此类问题解决方法

作者头像
全栈程序员站长
发布2022-09-14 10:17:49
9.8K0
发布2022-09-14 10:17:49
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

文章目录

问题

最近升级 Python 项目,由 Python2.7 升级到 Python3.8.3,项目使用了 PySide2,对于较新的Python3.8.3 , PySide2 可能存在些许不兼容问题,环境配置完成后,出现一连串的 ImportError: DLL load failed 找不到指定模块 对于很多 Python 开发者来说,这类问题最为头疼,不知道如何下手解决。

我是在 virtualenv 虚拟环境下配置 Python3.8.3 的开发环境。

  • OS: Windows 7 x64
  • Python: 3.8.3

各种依赖安装完毕后,运行项目,首先报出的是

from .shiboken2 import * ImportError: DLL load failed while importing shiboken2: 找不到指定的模块

定位

从提示上看,是加载 DLL 失败,是关于 shiboken2 模块的。 第一反应是,这个库用到了某个 DLL, DLL 所在路径没有加到虚拟环境的变量 path 中。 于是打开 shiboken2 的包目录查找,看到有一些 DLL 文件:

在这里插入图片描述
在这里插入图片描述

首先尝试把它们复制到 Python 虚拟环境的 Scripts 目录下。依然不行,看来路径正确还是不行,或许是缺少其它依赖的 DLL,网上下载、打开 DLL 依赖检查工具 Dependency Walker,将 shiboken2.pyd 拖入这个工具中,发现缺少 python3.dll 依赖:

在这里插入图片描述
在这里插入图片描述

原来,在创建 Python3.8.3 虚拟环境时,只自动复制了 python38.dllScripts 目录,没有 python3.dll,于是手动复制 python3.dll 到虚拟环境的 Scripts 目录。再次运行项目,果然上面错误没有了。但报了另外一个错误:

from PySide2.QtCore import QObject, QSettings ImportError: DLL load failed while importing QtCore: 找不到指定的模块

继续使用 Dependency Walker,打开 PySide2 包目录下的 QtCore.pyd,发现缺少几个 DLL 文件:

在这里插入图片描述
在这里插入图片描述

网上搜索并下载缺失的 DLL 文件,放到 Scripts 目录,再次运行项目,错误消失啦。

结论

Dependency Walker 真香!

在这里插入图片描述
在这里插入图片描述

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/158590.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年7月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 问题
  • 定位
  • 结论
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档