SyntaxError:多个异常类型必须用括号括起来

Ayu*_*ngh 9 python syntax-error comtypes

我是初学者,在使用 python 安装 pycaw 进行音频控制后遇到问题,在放置 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
Run Code Online (Sandbox Code Playgroud)

基本初始化:-

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))
Run Code Online (Sandbox Code Playgroud)

我尝试在整个网络上搜索此内容,但找不到修复程序
我还尝试进入虚拟环境中的模块文件,并通过在 COMError 周围放置括号来进行括号化,但
代码中的其他行出现了相同的错误,
还尝试重新安装 pycaw并多次尝试安装不同版本的 pycaw 但没有任何修复

如何修复这个错误?

小智 6

经过一段时间的搜索,我发现 comtypes 使用了一个与 python 2 和 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
Run Code Online (Sandbox Code Playgroud)


B K*_*B K 5

我刚刚明白了这条神秘"SyntaxError: multiple exception types must be parenthesized"消息的含义。它试图告诉您的是,在您使用的较新版本的 Python 中,此语法不再有效:

except COMError, err:
Run Code Online (Sandbox Code Playgroud)

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

except COMError(err):
Run Code Online (Sandbox Code Playgroud)

  • @BK是的,这已经被理解了,但是您不能像那样更改计算机中软件包的每一行,而且,即使您设法做到了一些操作,在重新安装软件包时,错误也会再次发生。 (3认同)
  • 正如目前所写的,您的答案尚不清楚。请[编辑]添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。您可以[在帮助中心](/help/how-to-answer)找到有关如何写出好的答案的更多信息。 (3认同)