运行SpeechRecognition代码时PySide2.QtGui无QApplication属性报错
解决speech_recognition代码运行时的PySide2 AttributeError问题
问题背景
使用speech_recognition库的音频识别代码:
import speech_recognition as sr def recognize(): r = sr.Recognizer() with sr.AudioFile("test.wav") as source: audio = r.record(source) print(r.recognize_google(audio)) recognize()
首次运行提示缺少PySide2,安装后出现以下错误:
Failed to enable GUI event loop integration for 'qt' Traceback (most recent call last): File "c:\program files\microsoft visual studio\2022\enterprise\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\pydev_ipython\matplotlibtools.py", line 30, in do_enable_gui enable_gui(guiname) File "c:\program files\microsoft visual studio\2022\enterprise\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\pydev_ipython\inputhook.py", line 540, in enable_gui return gui_hook(app) File "c:\program files\microsoft visual studio\2022\enterprise\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\pydev_ipython\inputhook.py", line 180, in enable_qt self.enable_qt4(app) File "c:\program files\microsoft visual studio\2022\enterprise\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\pydev_ipython\inputhook.py", line 205, in enable_qt4 app, inputhook_qt4 = create_inputhook_qt4(self, app) File "c:\program files\microsoft visual studio\2022\enterprise\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\pydev_ipython\inputhookqt4.py", line 84, in create_inputhook_qt4 app = QtGui.QApplication([" "]) AttributeError: module 'PySide2.QtGui' has no attribute 'QApplication' Backend QtAgg is interactive backend. Turning interactive mode on.
解决方案
1. 更换matplotlib后端(最简单有效)
错误源于调试器集成的matplotlib Qt后端适配问题,直接指定非Qt后端即可:
在代码开头添加以下两行:
import matplotlib matplotlib.use('TkAgg') # 或使用'Agg'(非交互式,适合无GUI环境)
修改后的完整代码:
import matplotlib matplotlib.use('TkAgg') import speech_recognition as sr def recognize(): r = sr.Recognizer() with sr.AudioFile("test.wav") as source: audio = r.record(source) print(r.recognize_google(audio)) recognize()
2. 用PyQt5替代PySide2
卸载当前PySide2,安装PyQt5:
pip uninstall PySide2 -y pip install PyQt5
PyQt5的模块结构与旧版适配更好,能避开该属性错误。
3. 命令行直接运行(绕开IDE调试器问题)
该错误仅在VS调试模式下触发,直接用命令行执行代码即可正常运行:
python your_script_name.py
4. 降级PySide2到兼容版本
安装5.12.x版本的PySide2,该版本中QApplication仍保留在QtGui模块的兼容导入:
pip install PySide2==5.12.0
内容的提问来源于stack exchange,提问作者BaRiboD
相关产品推荐
相关产品推荐

