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)
我刚刚明白了这条神秘"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)