Mac M1环境下Python3.11中Pyttsx3初始化报错objc未定义
解决Pyttsx3初始化时
objc未定义的错误 问题场景
在Python 3.11脚本中初始化已安装的Pyttsx3模块时触发异常。执行以下代码:
import pyttsx3 engine=pyttsx3.init()
关联的nsss.py库报错:
NameError: name 'objc' is not defined. Did you mean: 'object'?
完整堆栈跟踪信息:
Traceback (most recent call last): File ".venv/lib/python3.10/site-packages/pyttsx3/__init__.py", line 20, in init eng = _activeEngines[driverName] File "~/.pyenv/versions/3.10.7/lib/python3.10/weakref.py", line 137, in __getitem__ o = self.data[key]() KeyError: 'nsss' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "~/.pyenv/versions/3.10.7/lib/python3.10/runpy.py", line 196, in _run_module_as_main return _run_code(code, main_globals, None, File "~/.pyenv/versions/3.10.7/lib/python3.10/runpy.py", line 86, in _run_code exec(code, run_globals) File "~/dev/thea/thea/tts.py", line 13, in <module> main() File "~/dev/thea/thea/tts.py", line 7, in main engine = init(driverName="nsss") File ".venv/lib/python3.10/site-packages/pyttsx3/__init__.py", line 22, in init eng = Engine(driverName, debug) File ".venv/lib/python3.10/site-packages/pyttsx3/engine.py", line 30, in __init__ self.proxy = driver.DriverProxy(weakref.proxy(self), driverName, debug) File ".venv/lib/python3.10/site-packages/pyttsx3/driver.py", line 50, in __init__ self._module = importlib.import_module(name) File "~/.pyenv/versions/3.10.7/lib/python3.10/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1050, in _gcd_import File "<frozen importlib._bootstrap>", line 1027, in _find_and_load File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 688, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 883, in exec_module File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed File ".venv/lib/python3.10/site-packages/pyttsx3/drivers/nsss.py", line 12, in <module> class NSSpeechDriver(NSObject): File ".venv/lib/python3.10/site-packages/pyttsx3/drivers/nsss.py", line 13, in NSSpeechDriver @objc.python_method NameError: name 'objc' is not defined. Did you mean: 'object'?
解决方案
- 安装缺失依赖:macOS平台下,Pyttsx3的nsss驱动依赖
pyobjc库,执行以下命令安装:pip install pyobjc - 虚拟环境适配:如果使用了虚拟环境,确保在对应虚拟环境中执行上述安装命令,避免依赖安装到全局环境导致无法识别。
- 版本兼容性检查:确认
pyobjc版本与Python 3.11兼容,最新版pyobjc已支持Python 3.11,若安装后仍有问题,可尝试指定兼容版本:pip install pyobjc==9.0.1
内容的提问来源于stack exchange,提问作者Tommy
相关产品推荐
相关产品推荐

