【问题标题】:import pyttsx works in python 2.7, but not in python3import pyttsx 适用于 python 2.7,但不适用于 python3
【发布时间】:2020-09-13 19:13:20
【问题描述】:

问题:为什么python3导入pyttsx时找不到引擎模块?

详情

我正在使用 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

我已经安装并使用了 sudo pip install pyttsx

我已经导入了系统

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

感谢您的帮助!

【问题讨论】:

    标签: python python-3.x raspberry-pi


    【解决方案1】:

    我尝试在 Python 3.4(在 Windows 上)上安装 pyttsx。以下是我的发现:

    pyttsx found on PyPiPeter Parente on GitHub 开发。

    Parente 放弃了进一步的开发,并且从未将其移植到 Python 3。我什至无法将他的版本安装到 Python 3 上。我不确定你是如何做到这一点的。

    一位名叫James Percent forked it 的用户做了一个相当小的尝试来使其与Python 3 兼容。

    我发现尝试还远远不够,因为 - 虽然我可以安装它,甚至可以成功安装 import pyttsx,但当我尝试调用 pyttsx.init() 时,它会动态导入驱动程序,并失败并显示导入错误。

    我创建了一个further fork to fix that,我将提交给 James Percent。有了这些更改,我就可以运行@Khanrad 的测试脚本了。

    【讨论】:

    • James Percent 已合并我的拉取请求。我建议使用他的叉子,因为它更有可能被维护。
    【解决方案2】:

    我相信你正在寻找图书馆:

    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();
    

    【讨论】:

      【解决方案3】:

      在 python 3 中试试这个:

      pip install pyttsx3

      如果出现类似“找不到引擎”的引擎错误,请尝试安装它。

      pip install python-engineio

      【讨论】:

        【解决方案4】:

        我不确定你要做什么......

        在python 3中,你必须调用引擎:

        engine = pyttsx.init()
        engine.say("What you want to say")
        engine.runAndWait()
        

        【讨论】:

        • 您能否确认您已经看到 pyttsx 在 Python 3 中工作,或者这是假设性的?
        • @oddthinking 说它不可用。当时是的,这是假设的
        猜你喜欢
        • 2016-04-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-08
        • 1970-01-01
        • 2012-05-01
        • 1970-01-01
        • 2017-02-22
        相关资源
        最近更新 更多