Я пытался использовать функцию playsound из модуля playsound в python 3. Я получил mp3-файл звукового сигнала пожарной тревоги от http://soundbible.com/1656-House-Fire-Alarm.html для тестирования и сохранил его как siren1.mp3.
Минимальный код:
from playsound import playsound
playsound('siren1.mp3')
Изначально я попытался запустить минимальный двухстрочный код Python в Thonny и не смог заставить его работать, так как он выдал «Нет модуля с именем gi»ошибка.
Это заставило меня попробовать разные вещи, обнаружив, что некоторые из них работают, а другие нет.Поскольку мне в итоге удалось заставить PlaySound работать в Thonny, мой вопрос не в том, как заставить PlaySound работать.
В стеке потока я нахожу много связанных или похожих вопросов в форме «x работает на y, но не на z» и «Нет модуля с именем xx».Как относительно новый пользователь Python, я ищу инструкции о том, как понять различные пути, по которым Python ищет модули и т. Д., В зависимости от того, как выполняется код Python.
Вот эксперименты, которые я провели мои наблюдения:
Когда я запустил минимальный код в Thonny (Thonny версия 2.1.16, Python версия 3.6.7, Tk версия 8.6.8), произошел сбой при отсутствии модуляnamed gi "error.
Та же самая программа на python работала правильно, когда я запустил ее в IDLE (IDLE версии 3.6.7, Python версии 3.6.7, Tk версии 8.6.8) и сиренеШум воспроизводился.
В терминале Ubuntu (18.04) «$ which python
» показывал: / usr / bin / python
$ python3 ./playSiren.py
работал правильно и воспроизводил звук
4. Теперь запустил python3 в командной строке
$ python3
Python 3.6.7 (по умолчанию, 22 октября 2018 г., 11:32:17) [GCC 8.2.0] в Linux
Теперь я скопировал и вставил две строки кода Python и запустилм в приглашении Python.Снова код работает правильно и производит звук.
Я добавил строку shebang к минимальному коду и изменил ее на исполняемый файл, а затем запустил его из приглашения Ubuntu.
Снова код запустился правильно и издал звук
Когда я запускаю:
sudo apt-get install python3-gi
,
Я получаю сообщение: python3-gi уже является самой новой версией (3.26.1-2ubuntu1).
В IDLE:
>>> import gi
>>> gi
<module 'gi' from '/usr/lib/python3/dist-packages/gi/__init__.py'>
sys.path
в режиме бездействия
/home/pi/.local/lib/python3.6/site-packages
/home/pi/Python Learning
/usr/bin
/usr/lib/python3.6
/usr/lib/python3.6/lib-dynload
/usr/lib/python3/dist-packages
/usr/lib/python36.zip
/usr/local/lib/python3.6/dist-packages
в тоннах:
>>> import gi
Traceback (последний вызов был последним): файл "",строка 1, в ModuleNotFoundError: нет модуля с именем 'gi'
sys.path
в Thonny:
/home/pi/.thonny/Python36/lib/python3.6/site-packages
/home/pi/.thonny/jedi_0.11.1
/home/pi/Python Learning
/usr/lib/python3.6
/usr/lib/python3.6/lib-dynload
/usr/lib/python3/dist-packages/thonny/shared
/usr/lib/python36.zip
В Thonny я добавил следующее к sys.path
sys.path.append('/usr/lib/python3/dist-packages/gi/__init__.py')
sys.path.append('/usr/lib/python3/dist-packages/gi/')
Тем не менее, я получаю сообщение Нет модуль с именем 'gi' в Thonny.
Если IDLE показываетМодуль gi находится в /usr/lib/python3/dist-packages/gi/__init__.py
, я ожидал, что Тонни также сможет найти gi, когда добавлю его в sys.path.Почему это не сработало?
Затем я добавил следующее:
sys.path.append("/usr/lib/python3/dist-packages")
Теперь больше не было ошибки «Нет модуля с именем« gi »», и воспроизведение звука правильно производило звук сирены..!