«из gtts import gTTS» прекрасно работает в python 2.7, но не работает в python 3.5. Зачем? - PullRequest
0 голосов
/ 18 мая 2019

Я хочу выполнить этот код:

from gtts import gTTS
tts = gTTS('hello', lang='en')
tts.save('hello.mp3')

В Python (Python 2.7.13) работает нормально, но в Python3 (Python 3.5.3) не работает.

Он имеетвсегда работал на старом питоне.Теперь на новом ПК (малина) я хотел начать использовать python3 (3.5.3), поэтому я попытался, и он не работал.

Поскольку это была новая установка, возможно, gtts не былоустановлен, поэтому я установил с:

pi@raspberrypi:~ $ pip install gTTS

У меня было это:

Collecting gTTS
Downloading
...
...
...
Successfully built gTTS bs4 gtts-token
Installing collected packages: backports.functools-lru-cache, soupsieve, beautifulsoup4, bs4, click, idna, chardet, certifi, urllib3, requests, gtts-token, six, gTTS
Successfully installed backports.functools-lru-cache-1.5 beautifulsoup4-4.7.1 bs4-0.0.1 certifi-2019.3.9 chardet-3.0.4 click-7.0 gTTS-2.0.3 gtts-token-1.1.3 idna-2.8 requests-2.22.0 six-1.12.0 soupsieve-1.9.1 urllib3-1.25.2
pi@raspberrypi:/home $ 

Я попытался еще раз, и он не работал.Я попытался со старой версией 2.7 и, к моему удивлению, она работала.

Работа в python:

pi@raspberrypi:/ $ python
Python 2.7.13 (default, Sep 26 2018, 18:42:22) 
[GCC 6.3.0 20170516] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from gtts import gTTS
>>> 

Не работает в python3

pi@raspberrypi:~ $ python3
Python 3.5.3 (default, Sep 27 2018, 17:25:39) 
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from gtts import gTTS
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named 'gtts'
>>> 

Тогда,Я заметил, что есть pip3!Когда я делаю

pi@raspberrypi:~ $ sudo pip3 install gTTS

gTTS там нет, поэтому я сделал

pi@raspberrypi:~ $ sudo pip3 install gTTS

Но после этого я получаю красный текст и сообщение об ошибке msg

 File "/usr/share/python-wheels/urllib3-1.19.1-py2.py3-none-any.whl/urllib3/connectionpool.py", line 643, in urlopen
    _stacktrace=sys.exc_info()[2])
  File "/usr/share/python-wheels/urllib3-1.19.1-py2.py3-none-any.whl/urllib3/util/retry.py", line 315, in increment
    total -= 1
TypeError: unsupported operand type(s) for -=: 'Retry' and 'int'

КогдаЯ снова проверяю список пипсов, gTTS все еще не существует ... Есть идеи?Спасибо

1 Ответ

0 голосов
/ 18 мая 2019

Вы жалуетесь, что вы запустили определенного интерпретатора и видели:

from gtts import gTTS
...
ImportError: No module named 'gtts'

или более кратко:

import gtts
...
ImportError: No module named 'gtts'

Сложность заключается в том, что вы никогда не устанавливали gtts для этого интерпретатора.

Да, вы запустили pip (или, что эквивалентно, pip2), которое предлагает потрясающий сервис для вашего интерпретатора python2.7.Нет, вы никогда не запускали pip3, что может хорошо работать для вашего интерпретатора python3.5.

Возможно, было бы лучше вызвать его следующим образом:

$ python3 -m pip install gTTS

Тогда вы 'Вы совершенно уверены, что sys.path будет во время установки, и что пакет окажется в нужном месте для import, чтобы найти его.

В качестве отдельного элемента 3.5 немного устарел, рассмотрите возможность использованияболее новая версия.

...