1. 程式人生 > 其它 >Python3 engine = pyttsx3.init()報錯問題終極解答

Python3 engine = pyttsx3.init()報錯問題終極解答

技術標籤:解決問題Pythonpythonbugpip

。。。

1. 引

話說最近容易失眠,所以想寫一個催覺的程式。想來想去,還是用了pyttsx3。
於是,首先安裝pyttsx3。(Win10)
首先在cmd中輸入:

pip install pyttsx3

安裝完畢。
在python中import pyttsx3
一切都如此順利。對於pyttsx3的用法這裡不再敘述。但當
engine = pyttsx3.init()時,災難降臨了。。

>>> engine = pyttsx3.init()
Traceback (most recent call last):
  File "C:\Users\Q寶\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pyttsx3\__init__.py"
, line 20, in init eng = _activeEngines[driverName] File "C:\Users\Q寶\AppData\Local\Programs\Python\Python38-32\lib\weakref.py", line 131, in __getitem__ o = self.data[key]() KeyError: None During handling of the above exception, another exception occurred: Traceback (most recent call last)
: File "<pyshell#22>", line 1, in <module> engine = pyttsx3.init() File "C:\Users\Q寶\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pyttsx3\__init__.py", line 22, in init eng = Engine(driverName, debug) File "C:\Users\Q寶\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pyttsx3\engine.py"
, line 30, in __init__ self.proxy = driver.DriverProxy(weakref.proxy(self), driverName, debug) File "C:\Users\Q寶\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pyttsx3\driver.py", line 50, in __init__ self._module = importlib.import_module(name) File "C:\Users\Q寶\AppData\Local\Programs\Python\Python38-32\lib\importlib\__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1014, in _gcd_import File "<frozen importlib._bootstrap>", line 991, in _find_and_load File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 671, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 783, in exec_module File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed File "C:\Users\Q寶\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pyttsx3\drivers\sapi5.py", line 10, in <module> import pythoncom File "C:\Users\Q寶\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pythoncom.py", line 2, in <module> import pywintypes ModuleNotFoundError: No module named 'pywintypes'

報錯發瘋似的襲來。。。於是,翻來翻去,思前想後,得到了以下解決方法:

2. 解決方法

2.1 安裝pywin32

網上99%的資料證明,你沒有安裝pwin32,你沒有安裝pwin32,你沒有安裝pwin32…
解決:

pip install pywin32

如果你沒有安裝,那應該是一堆進度條啥的。但如果你安裝了,得到的應該是這個東西:
pywin32已安裝
那麼,按照網友的說法,你可能需要下一條方法。。。

2.2 安裝pypiwin32

解決:

pip install pypiwin32

同樣,如果一堆

Requirement already satisfied:.....

那麼,毀滅吧!
。。。

2.3 新增環境變數

總之,當我試完以上幾點後,基本找到的都是同樣的答案。這是一件很讓人崩潰的事。直到第二天,我終於找到了這個方法,希望對大家有幫助。
python中有時搜尋模組會找不到路徑,這時就需要我們手動新增。方法也十分簡單:
開啟python:

import sys
sys.path#檢視已有的環境變數
sys.path.append("<Python所在的路徑>\\Lib\\site-packages\\win32")
sys.path.append("<Python所在的路徑>\\Lib\\site-packages\\win32\\lib")
#Python所在的路徑是安裝時決定的。一般是C:\\Users\\<你的使用者名稱>\\AppData\\Local\\Programs\\Python\\Python38-32

如果命令沒問題,那麼應該是會直接跳出下一個’>>>'提示符。注意一條一條複製,不然可能會出問題。檢查一下

engine = pyttsx3.init()

應該是不會出事了。如果真的還有問題,那麼我收回標題內“終極”二字,另請度娘吧!

2.4 其他方法

  1. 使用pip3而不是pip
  2. pip install -i https://pypi.douban.com/simple pypiwin32
  3. python -m pip install pypiwin32
  4. pip install -U pypiwin32
  5. python -m pip install pyttsx3==2.71
  6. 使用engine = pyttsx3.Engine(),不用init方法了
  7. 。。。。。。。。。。。。。。。。(這是一個真實的回答,但我沒看懂)

2.5 其他提示

  1. 可以通過pip list可以獲取已安裝的模組和其版本號。
  2. engine.say("快睡覺!快睡覺!")後不會播放語音(哈哈,別以為音效卡壞了)等到engine.runAndWait()後,之前所有的‘engine.say("…")’裡的內容會一起播放出來並一直阻塞到播放完畢。

感謝觀看我的部落格,原創不易,資料是自己整理的。解決問題實屬不易。希望能幫到大家。