python 语法错误:多个异常类型必须用括号括起来

iyfamqjs  于 2022-12-21  发布在  Python
关注(0)|答案(2)|浏览(2056)

我是一个初学者,有一个问题后,安装pycaw的音频控制使用python,在把基本的初始化代码为pycaw,我得到以下错误:-

Traceback (most recent call last):
  File "c:\Users\...\volumeControl.py", line 7, in <module>
    from comtypes import CLSCTX_ALL
  File "C:\...\env\lib\site-packages\comtypes\__init__.py", line 375
    except COMError, err:
           ^^^^^^^^^^^^^
SyntaxError: multiple exception types must be parenthesized

基本初始化:-

from ctypes import cast, POINTER
from comtypes import CLSCTX_ALL
from pycaw.pycaw import AudioUtilities, IAudioEndpointVolume

devices = AudioUtilities.GetSpeakers()
interface = devices.Activate(
    IAudioEndpointVolume._iid_, CLSCTX_ALL, None)
volume = cast(interface, POINTER(IAudioEndpointVolume))

我试着在网上搜索这个问题,但找不到解决办法
我还尝试进入虚拟环境中的模块文件,并在COMError,err周围加上括号
但是代码中的其他行出现了相同的错误,
还尝试重新安装pycaw,并尝试安装不同版本的pycaw几次,但没有修复
如何修复此错误?

rnmwe5a2

rnmwe5a21#

经过一段时间的搜索,我发现comtypes使用了一个工具来兼容python 2和python 3,但在新版本中不再起作用。我不得不降级两个包并重新安装comtypes:

pip install setuptools==57.0.0 --force-reinstall
pip install wheel==0.36.2 --force-reinstall
pip uninstall comtypes
pip install --no-cache-dir comtypes
von4xj4u

von4xj4u2#

我刚刚弄明白了这个神秘的"SyntaxError: multiple exception types must be parenthesized"消息的意思,它只是想告诉你,在你使用的Python的新版本中,这个语法不再有效:

except COMError, err:

相反,您应该使用以下语法:

except COMError(err):

相关问题