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

2023-05-16

文章目录

    • 问题
    • 定位
    • 结论
    • 补充

问题

最近升级 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 真香!
在这里插入图片描述

补充

有时还会遇到 %1 不是有效的 win32 程序 这种对python开发者来说也是比较头疼的。
通常这个问题都是由于某个包内的 pyd 或 dll 与 python 的版本(x86/x64)不匹配。如何查看 pyd 或 dll 是多少位的?Windows 下使用 dumpbin.exe 工具(安装了VS2019才有,或者网上下载吧)。
比如我遇到的:安装了 PyQt5 后,导入 PyQt5时,报错: sip 不是有效的 win32 程序。

dumpbin.exe /HEADERS sip.pyd

执行后发现 sip.pyd 是x86的(32位),而我的Python是64位,而且其他装好的的QtGui.pyd, QtCore.pyd 等等都是 64位,难怪不匹配。只有sip.pyd 是 32 位,不清楚这情况是如何造成的。
于是 pip uninstall 了 PyQt5_sip,pip 重新安装 ,版本正确了,错误消失了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 通过 Scrapy 抓取 Google Analytics

    我一直在尝试使用 Scrapy 从 Google Analytics 获取一些数据 尽管我是一个完全的 Python 新手 但我已经取得了一些进展 我现在可以通过 Scrapy 登录 Google Analytics 但我需要发出 AJAX
  • 在 python 程序中合并第三方库的最佳实践是什么?

    下午好 我正在为我的工作编写一个中小型Python程序 该任务需要我使用 Excel 库xlwt and xlrd 以及一个用于查询 Oracle 数据库的库 称为CX Oracle 我正在通过版本控制系统 即CVS 开发该项目 我想知道围
  • SQLAlchemy 通过关联对象声明式多对多自连接

    我有一个用户表和一个朋友表 它将用户映射到其他用户 因为每个用户可以有很多朋友 这个关系显然是对称的 如果用户A是用户B的朋友 那么用户B也是用户A的朋友 我只存储这个关系一次 除了两个用户 ID 之外 Friends 表还有其他字段 因此
  • 使 django 服务器可以在 LAN 中访问

    我已经安装了Django服务器 可以如下访问 http localhost 8000 get sms http 127 0 0 1 8000 get sms 假设我的IP是x x x x 当我这样做时 从同一网络下的另一台电脑 my ip
  • 为 Anaconda Python 安装 psycopg2

    我有 Anaconda Python 3 4 但是每当我运行旧代码时 我都会通过输入 source activate python2 切换到 Anaconda Python 2 7 我的问题是我为 Anaconda Python 3 4 安
  • Python(Selenium):如何通过登录重定向/组织登录登录网站

    我不是专业程序员 所以请原谅任何愚蠢的错误 我正在做一些研究 我正在尝试使用 Selenium 登录数据库来搜索大约 1000 个术语 我有两个问题 1 重定向到组织登录页面后如何使用 Selenium 登录 2 如何检索数据库 在我解决
  • 使用带有关键字参数的 map() 函数

    这是我尝试使用的循环map功能于 volume ids 1 2 3 4 5 ip 172 12 13 122 for volume id in volume ids my function volume id ip ip 我有办法做到这一点
  • 从字符串中删除识别的日期

    作为输入 我有几个包含不同格式日期的字符串 例如 彼得在16 45 我的生日是1990年7月8日 On 7 月 11 日星期六我会回家 I use dateutil parser parse识别字符串中的日期 在下一步中 我想从字符串中删除
  • 使用 on_bad_lines 将 pandas.read_csv 中的无效行写入文件

    我有一个 CSV 文件 我正在使用 Python 来解析该文件 我发现文件中的某些行具有不同的列数 001 Snow Jon 19801201 002 Crom Jake 19920103 003 Wise Frank 19880303 l
  • Python 函数可以从作用域之外赋予新属性吗?

    我不知道你可以这样做 def tom print tom s locals locals def dick z print z name z name z guest Harry print z guest z guest print di
  • AWS EMR Spark Python 日志记录

    我正在 AWS EMR 上运行一个非常简单的 Spark 作业 但似乎无法从我的脚本中获取任何日志输出 我尝试过打印到 stderr from pyspark import SparkContext import sys if name m
  • 如何使用Python创建历史时间线

    So I ve seen a few answers on here that helped a bit but my dataset is larger than the ones that have been answered prev
  • Pygame:有没有简单的方法可以找到按下的任何字母数字的字母/数字?

    我目前正在开发的游戏需要让人们以自己的名义在高分板上计时 我对如何处理按键有点熟悉 但我只处理过寻找特定的按键 有没有一种简单的方法可以按下任意键的字母 而不必执行以下操作 for event in pygame event get if
  • IO 密集型任务中的 Python 多线程

    建议仅在 IO 密集型任务中使用 Python 多线程 因为 Python 有一个全局解释器锁 GIL 只允许一个线程持有 Python 解释器的控制权 然而 多线程对于 IO 密集型操作有意义吗 https stackoverflow c
  • 对年龄列进行分组/分类

    我有一个数据框说df有一个柱子 Ages gt gt gt df Age 0 22 1 38 2 26 3 35 4 35 5 1 6 54 我想对这个年龄段进行分组并创建一个像这样的新专栏 If age gt 0 age lt 2 the
  • 如何在 Python 中追加到 JSON 文件?

    我有一个 JSON 文件 其中包含 67790 1 kwh 319 4 现在我创建一个字典a dict我需要将其附加到 JSON 文件中 我尝试了这段代码 with open DATA FILENAME a as f json obj js
  • 为字典中的一个键附加多个值[重复]

    这个问题在这里已经有答案了 我是 python 新手 我有每年的年份和值列表 我想要做的是检查字典中是否已存在该年份 如果存在 则将该值附加到特定键的值列表中 例如 我有一个年份列表 并且每年都有一个值 2010 2 2009 4 1989
  • 类型错误:预期单个张量时的张量列表 - 将 const 与 tf.random_normal 一起使用时

    我有以下 TensorFlow 代码 tf constant tf random normal time step batch size 1 1 我正进入 状态TypeError List of Tensors when single Te
  • Scrapy:如何使用元在方法之间传递项目

    我是 scrapy 和 python 的新手 我试图将 parse quotes 中的项目 item author 传递给下一个解析方法 parse bio 我尝试了 request meta 和 response meta 方法 如 sc
  • 从列表指向字典变量

    假设你有一个清单 a 3 4 1 我想用这些信息来指向字典 b 3 4 1 现在 我需要的是一个常规 看到该值后 在 b 的位置内读写一个值 我不喜欢复制变量 我想直接改变变量b的内容 假设b是一个嵌套字典 你可以这样做 reduce di

随机推荐

  • Android 人脸解锁源码剖析

    和你一起终身学习 xff0c 这里是程序员Android 经典好文推荐 xff0c 通过阅读本文 xff0c 您将收获以下知识点 一 人脸识别身份验证HIDL 二 人脸模块流程分析 三 人脸录入 四 人脸匹配 五 人脸解锁屏幕 一 人脸识别
  • Android 手机按键客制化详解

    在Android 中会有以下5个按键 xff08 Back Home Menu Power Volume xff09 与用户进行交互 xff0c Framework 层中实现按键功能 xff0c 因此 xff0c 从手机系统定制的角度 xf
  • 基python实现多线程网页爬虫

    一般来说 xff0c 使用线程有两种模式 一种是创建线程要执行的函数 把这个函数传递进Thread对象里 xff0c 让它来执行 另一种是直接从Thread继承 xff0c 创建一个新的class xff0c 把线程执行的代码放到这个新的c
  • 手机重启问题 Log 抓取方法

    极力推荐文章 xff1a 欢迎收藏 Android 干货分享 本篇文章主要介绍展讯平台手机开发中的部分重启问题知识点 xff0c 通过阅读本篇文章 xff0c 您将收获以下内容 一 User 版本 默认开启 sysdump 方法 二 插入S
  • CentOS7下普通账号通过systemctl管理服务需要输入root密码

    问题描述 xff1a 使用普通账号test通过systemctl启动系统服务提示需要输入root密码 xff1a 解决方案 xff1a 根据上面提示得知权限由polkit进行管理 xff0c 对应的是org freedesktop syst
  • VNC的安装使用和分辨率设置

    1 使用yum命令安装VNC server xff1a yum y install tigervnc server 若为离线环境则安装rpm包 rpm ivh tigervnc server 1 8 0 17 el7 x86 64 rpm
  • Linux如何搭建Java部署环境

    Java具有着跨平台的特性 xff0c 一次编写 xff0c 到处运行 xff0c 如 xff1a 将Java程序部署到Linux上也可以运行 xff0c 但是也是需要借助一些工具 xff0c 如 xff1a JDK xff0c MySql
  • 银河麒麟桌面系统启用 rc.local 设置开机启动方法

    银河麒麟系统不再使用initd管理系统 xff0c 改用systemd 然而systemd很难用 xff0c 改变太大 xff0c 跟之前的完全不同 使用systemd设置开机启动 xff0c 为了像以前一样 xff0c 在 etc rc
  • 记录一次RocketMq消费不均的解决方案

    背景 xff1a xxx课件系统有一个打包操作 xff0c 打包时需要把课件里面所有视频 音频 图片 试题 文本等内容下载下来 xff0c 视频 图片根据不同需求需要压缩或者转码 xff0c 然后再上传到服务器 xff0c 所以根据课件内容
  • 教你在 PC 上安装 Arch Linux

    Arch Linux以其复杂的基于命令的安装而闻名 但是一旦你熟悉了这个过程的来龙去脉 xff0c 你就可以在任何电脑上安装 Arch 而不必担心终端 我们会帮助你到达那里 注意 xff1a Arch Linux ISO 包含一个名为arc
  • 如何对map进行排序

    Map介绍 常用的Map有HashMap xff0c TreeMap xff0c LinkedHashMap HashMap xff1a 最常用的Map xff0c 根据key的HashCode值来存储数据 xff0c 根据key可以直接获
  • 使用C++ 11 实现阻塞队列

    阻塞队列介绍 阻塞队列主要用于线程和线程之间的通信 当队列为空时 xff0c 从队列中获取元素的线程将会被挂起 xff1b 当队列是满时 xff0c 往队列里添加元素的线程将会挂起 本文使用C 43 43 11中的多线程库 xff0c 实现
  • 如何分析Android的Log

    转载自 http www 2cto com kf 201405 297264 html 首先 xff0c 让我们看一看AndroidLog的格式 下面这段log是以所谓的long格式打印出来的 从前面Logcat的介绍中可以知道 xff0c
  • DB2 的自增主键方式

    DB2 的自增主键方式 xff1a 1 not null generated by default as identity 不会自增长 一定要指定主键值 2 not null GENERATED ALWAYS AS IDENTITY 自增
  • Entity Framework-——数据迁移的过程

    官方文档 xff1a https docs microsoft com zh cn ef index 数据迁移的过程 文章前半部分使用的都是数据库默认的初始化对象 xff0c 即没有使用函数Database SetInitializer 修
  • JavaScript:for循环之1~100的加法运算

    问题 xff1a 求 1 100 之间的整数累加和 首先我们先分析一下这个问题的运算思路 思路分析 xff1a 1 100需要循环100次 需要一个计数器 i 需要一个存储结果的变量sum xff0c 初始值是 0 算法 xff1a 1 4
  • windows sysprep

    简单写下吧 xff0c 之前探究的windows sysprep 发现有些忘了 xff0c 这个还是很重要的 xff0c 不能忘 简单记录下 xff0c 还有其它的代码需要分析 xff0c 太忙了 sysprep是用来清理镜像的 xff0c
  • 容器镜像安全扫描之Trivy

    一 概述 1 1 Trivy简介 Trivy是一种适用于CI的简单而全面的容器漏洞扫描程序 软件漏洞是指软件或操作系统中存在的故障 缺陷或弱点 Trivy检测操作系统包 xff08 Alpine RHEL CentOS等 xff09 和应用
  • 关于天干地支及其计算

    以天干地支计算日期是我国悠良的传统文化 xff0c 最近在看如何计算人的生辰八字 xff0c 写了个程序 xff0c 但是只能算年的干支 xff0c 月 日的干支计算方法太复杂了 xff0c 望之只能却步 xff0c 还是乖乖去查万年历比较
  • [Python] ImportError: DLL load failed ... 找不到指定的模块 此类问题解决方法

    文章目录 问题定位结论补充 问题 最近升级 Python 项目 xff0c 由 Python2 7 升级到 Python3 8 3 xff0c 项目使用了 PySide2 xff0c 对于较新的Python3 8 3 PySide2 可能存