在Python 2.7中可用的pyttsx在Python 3中不可用
问题: 为什么在导入pyttsx时,python3找不到引擎模块?
详细信息:
我在一台运行Raspbian Wheezy的树莓派上进行这个操作。
在python 2.7下,以下代码可以正常工作:
>>> import pyttsx
在python3下,执行时出现了以下情况:
>>> import pyttsx
Traceback (etc...)
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.2/dist-packages/pyttsx-1.1-py3.2.egg/pyttsx/__init__.py", line 18, in <module>
ImportError: No module named engine
我已经安装了pyttsx,使用了命令sudo pip install pyttsx。
我导入了sys模块。
sys.path包含了这些内容……
>>> print (sys.path)
['','/usr/local/lib/python3.2/dist-packages/setuptools-5.4.1-py3.2.egg', '/usr/local/lib/python3.2/dist-packages/pyttsx-1.1-py3.2.egg', '/usr/lib/python3.2','usr/lib/python3.2/plat-linux2', '/usr/lib/python3.2/lib-dynload','/usr/local/lib/python3.2/dist-packages','/usr/lib/python3/dist-packages']
运行ls /usr/local/lib/python3.2/dist-packages的结果是……
easy-install.pth pyttsx-1.1-py3.2.egg setuptools-5.4.1-py3.2.egg setuptools.pth
运行unzip -t /usr/local/lib/python3.2/dist-packages/pyttsx-1.1-py3.2.egg显示……
pyttsx/__init__.py OK
pyttsx/voice.py OK
pyttsx/engine.py OK
(etc...)
No errors detected in compressed data of pyttsx-1.1-py3.2.egg
谢谢你的帮助!
4 个回答
我不太明白你想要做什么……
在Python 3中,你需要调用引擎:
engine = pyttsx.init()
engine.say("What you want to say")
engine.runAndWait()
在Python 3中,可以试试这个:
pip install pyttsx3
如果出现类似“找不到引擎”的错误,那就试着安装这个。
pip install python-engineio
我尝试在Windows上给Python 3.4安装pyttsx。以下是我发现的情况:
在PyPi上找到的pyttsx是由Peter Parente在GitHub上开发的。
不过,Parente已经停止了后续的开发,并且从来没有把它移植到Python 3上。我甚至连他的版本都无法在Python 3上安装。我不太确定你是怎么做到的。
有个用户叫James Percent,他对这个项目进行了分支,并尝试让它兼容Python 3,但做得很简单。
我发现他的尝试不够深入,因为虽然我能安装它,甚至可以成功地使用import pyttsx
,但当我尝试调用pyttsx.init()
时,它会动态导入一个驱动程序,结果出现了导入错误。
于是我做了一个进一步的分支来修复这个问题,我会把这个提交给James Percent。经过这些修改后,我能够运行@Khanrad的测试脚本。
我想你是在找这个库:
pyttsx3
这个版本的库可以在python3中使用,现在已经在pypi上打包好了,适用于python2和python3。根据我的测试,它没有出现任何错误。
只需要使用:
pip install pyttsx3
使用方法:
import pyttsx3
engine = pyttsx3.init()
engine.say("I am talking now ");
engine.setProperty('rate',100)
engine.runAndWait();