mnr
mnr

Reputation: 566

import pyttsx works in python 2.7, but not in python3

Question: why is python3 unable to find the engine module when importing pyttsx?

Details:

I'm doing this on a raspberry pi with Raspbian Wheezy

Under python 2.7, the following works:

>>> import pyttsx

Under python3, the following happens:

>>> 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

I've installed and used sudo pip install pyttsx

I've imported sys

sys.path contains this...

>>> 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 results in...

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 shows....

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

Thanks for your help!

Upvotes: 7

Views: 13512

Answers (4)

pintz
pintz

Reputation: 181

In python 3 Try this:

pip install pyttsx3

if it gives an error of engine like "engine is not found" then try to install this.

pip install python-engineio

Upvotes: 0

Natesh bhat
Natesh bhat

Reputation: 13192

I believe you are looking for the library:

pyttsx3

This python3 compatible version is now packaged in pypi and works pretty well for both python2 and python3 and as far as i have tested , it didn't give any error.

just use :

pip install pyttsx3

Usage :

import pyttsx3
engine = pyttsx3.init()
engine.say("I am talking now ");
engine.setProperty('rate',100)  
engine.runAndWait();

Upvotes: 5

Oddthinking
Oddthinking

Reputation: 25282

I attempted to install pyttsx on Python 3.4 (on Windows). Here's what I discovered:

The pyttsx found on PyPi was developed by Peter Parente on GitHub.

Parente has abandoned further development, and never ported it to Python 3. I cannot even get his version to install on Python 3. I am not sure how you managed this.

A user called James Percent forked it and made a fairly minimal attempt to make it Python 3 compatible.

I found that attempt didn't go far enough, because - while I could install it and even import pyttsx successfully, when I tried to call pyttsx.init() it would do a dynamic import of a driver, and fail with an import error.

I made a further fork to fix that, which I will submit to James Percent. With those changes in place, I am able to run @Khanrad's test script.

Upvotes: 8

Khanrad
Khanrad

Reputation: 139

I'm not sure what you are trying to do...

In python 3, you have to call engine:

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

Upvotes: -3

Related Questions