Python3 engine = pyttsx3.init()報錯問題終極解答
阿新 • • 發佈:2021-01-29
。。。
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
如果你沒有安裝,那應該是一堆進度條啥的。但如果你安裝了,得到的應該是這個東西:
那麼,按照網友的說法,你可能需要下一條方法。。。
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 其他方法
- 使用pip3而不是pip
pip install -i https://pypi.douban.com/simple pypiwin32
python -m pip install pypiwin32
pip install -U pypiwin32
python -m pip install pyttsx3==2.71
- 使用engine = pyttsx3.Engine(),不用init方法了
- 。。。。。。。。。。。。。。。。(這是一個真實的回答,但我沒看懂)
2.5 其他提示
- 可以通過pip list可以獲取已安裝的模組和其版本號。
- 在
engine.say("快睡覺!快睡覺!")
後不會播放語音(哈哈,別以為音效卡壞了)等到engine.runAndWait()
後,之前所有的‘engine.say("…")’裡的內容會一起播放出來並一直阻塞到播放完畢。
感謝觀看我的部落格,原創不易,資料是自己整理的。解決問題實屬不易。希望能幫到大家。