You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 01:20:28