服务器做的网站怎么使用教程,定制设计的网站,做网站还有意义,上海网站建设小程序开发在vscode中调试#xff0c;命令行出现错误信息ModuleNotFoundError: No module named ‘imp’
报错原因
VSCode的python扩展会使用debugpy库实现调试功能。在涉及qt组件加载时#xff0c;debugpy的qt_loaders.py会尝试加载imp库。而在python3.12及以后的版本中#xff0c;…在vscode中调试命令行出现错误信息ModuleNotFoundError: No module named ‘imp’
报错原因
VSCode的python扩展会使用debugpy库实现调试功能。在涉及qt组件加载时debugpy的qt_loaders.py会尝试加载imp库。而在python3.12及以后的版本中imp库被importlib取代因此 import imp语句会报错ModuleNotFoundError。
解决方法
出现问题代码位于qt_loaders.py的has_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.