在vscode中调试,命令行出现错误信息ModuleNotFoundError: No module named ‘imp‘

本文主要是介绍在vscode中调试,命令行出现错误信息ModuleNotFoundError: No module named ‘imp‘,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在vscode中调试,命令行出现错误信息ModuleNotFoundError: No module named ‘imp’

报错原因

VSCode的python扩展会使用debugpy库实现调试功能。在涉及qt组件加载时,debugpyqt_loaders.py会尝试加载imp库。而在python3.12及以后的版本中,imp库被importlib取代,因此
import imp语句会报错ModuleNotFoundError

解决方法

出现问题代码位于qt_loaders.pyhas_binding函数定义中:
修改前:

def has_binding(api):
#中间省略import imptry:# importing top level PyQt4/PySide module is ok...mod = __import__(module_name)# ...importing submodules is notimp.find_module('QtCore', mod.__path__)imp.find_module('QtGui', mod.__path__)imp.find_module('QtSvg', mod.__path__)# we can also safely check PySide versionif api == QT_API_PYSIDE:return check_version(mod.__version__, '1.0.3')else:return Trueexcept ImportError:return False

对症下药,既然在新版python中imp库不再有效,为了兼容性,先尝试import imp语句,若无法导入imp包,则进入catch分支import importlib,修改代码如下:

def has_binding(api):
#中间省略try:import imp# importing top level PyQt4/PySide module is ok...mod = __import__(module_name)# ...importing submodules is notimp.find_module('QtCore', mod.__path__)imp.find_module('QtGui', mod.__path__)imp.find_module('QtSvg', mod.__path__)# we can also safely check PySide versionif api == QT_API_PYSIDE:return check_version(mod.__version__, '1.0.3')else:return Trueexcept ModuleNotFoundError:from importlib import machinery# importing top level PyQt4/PySide module is ok...mod = __import__(module_name)# ...importing submodules is notloader_details = (machinery.ExtensionFileLoader, machinery.EXTENSION_SUFFIXES)submod_finder = machinery.FileFinder(mod.__path__[0], loader_details)submod_check = (submod_finder.find_spec("QtCore") is not Noneand submod_finder.find_spec("QtGui") is not Noneand submod_finder.find_spec("QtSvg") is not None)# we can also safely check PySide versionif api == QT_API_PYSIDE:return check_version(mod.__version__, '1.0.3') and submod_checkelse:return submod_checkexcept ImportError:return False

可能有的同学会问,qt_loaders.py在哪里?——它的路径在报错信息中已经给出。例如:

C:\Users\XXX.vscode\extensions\ms-python.python-2024.2.1\pythonFiles\lib\python\debugpy_vendored\pydevd\pydev_ipython\qt_loaders.py", line 115, in has_binding
import imp
ModuleNotFoundError: No module named ‘imp’
Backend QtAgg is interactive backend. Turning interactive mode on.

这篇关于在vscode中调试,命令行出现错误信息ModuleNotFoundError: No module named ‘imp‘的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1066406

相关文章

Python中ModuleNotFoundError: No module named ‘timm’的错误解决

《Python中ModuleNotFoundError:Nomodulenamed‘timm’的错误解决》本文主要介绍了Python中ModuleNotFoundError:Nomodulen... 目录一、引言二、错误原因分析三、解决办法1.安装timm模块2. 检查python环境3. 解决安装路径问题

基于Spring实现自定义错误信息返回详解

《基于Spring实现自定义错误信息返回详解》这篇文章主要为大家详细介绍了如何基于Spring实现自定义错误信息返回效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录背景目标实现产出背景Spring 提供了 @RestConChina编程trollerAdvice 用来实现 HTT

VSCode中C/C++编码乱码问题的两种解决方法

《VSCode中C/C++编码乱码问题的两种解决方法》在中国地区,Windows系统中的cmd和PowerShell默认编码是GBK,但VSCode默认使用UTF-8编码,这种编码不一致会导致在VSC... 目录问题方法一:通过 Code Runner 插件调整编码配置步骤方法二:在 PowerShell

VSCode配置Anaconda Python环境的实现

《VSCode配置AnacondaPython环境的实现》VisualStudioCode中可以使用Anaconda环境进行Python开发,本文主要介绍了VSCode配置AnacondaPytho... 目录前言一、安装 Visual Studio Code 和 Anaconda二、创建或激活 conda

在VSCode中本地运行DeepSeek的流程步骤

《在VSCode中本地运行DeepSeek的流程步骤》本文详细介绍了如何在本地VSCode中安装和配置Ollama和CodeGPT,以使用DeepSeek进行AI编码辅助,无需依赖云服务,需要的朋友可... 目录步骤 1:在 VSCode 中安装 Ollama 和 CodeGPT安装Ollama下载Olla

Windows server服务器使用blat命令行发送邮件

《Windowsserver服务器使用blat命令行发送邮件》在linux平台的命令行下可以使用mail命令来发送邮件,windows平台没有内置的命令,但可以使用开源的blat,其官方主页为ht... 目录下载blatBAT命令行示例备注总结在linux平台的命令行下可以使用mail命令来发送邮件,Win

前端bug调试的方法技巧及常见错误

《前端bug调试的方法技巧及常见错误》:本文主要介绍编程中常见的报错和Bug,以及调试的重要性,调试的基本流程是通过缩小范围来定位问题,并给出了推测法、删除代码法、console调试和debugg... 目录调试基本流程调试方法排查bug的两大技巧如何看控制台报错前端常见错误取值调用报错资源引入错误解析错误

使用Go语言开发一个命令行文件管理工具

《使用Go语言开发一个命令行文件管理工具》这篇文章主要为大家详细介绍了如何使用Go语言开发一款命令行文件管理工具,支持批量重命名,删除,创建,移动文件,需要的小伙伴可以了解下... 目录一、工具功能一览二、核心代码解析1. 主程序结构2. 批量重命名3. 批量删除4. 创建文件/目录5. 批量移动三、如何安

nginx-rtmp-module模块实现视频点播的示例代码

《nginx-rtmp-module模块实现视频点播的示例代码》本文主要介绍了nginx-rtmp-module模块实现视频点播,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习... 目录预置条件Nginx点播基本配置点播远程文件指定多个播放位置参考预置条件配置点播服务器 192.

使用C/C++调用libcurl调试消息的方式

《使用C/C++调用libcurl调试消息的方式》在使用C/C++调用libcurl进行HTTP请求时,有时我们需要查看请求的/应答消息的内容(包括请求头和请求体)以方便调试,libcurl提供了多种... 目录1. libcurl 调试工具简介2. 输出请求消息使用 CURLOPT_VERBOSE使用 C