我试图在 Python 3 中使用 playsound 模块中的 playsound 函数。我从http://soundbible.com/1656-House-Fire-Alarm.html获得了一个火警声音的 mp3 文件来测试并保存为 siren1 .mp3。
最小代码:
from playsound import playsound
playsound('siren1.mp3')
最初,我尝试在 Thonny 中运行最小的 2 行 Python 代码,但无法让它工作,因为它给出了“No module named gi”错误。
它使我尝试了各种方法,发现其中一些有效,而另一些则无效。因为我最终设法让 playsound 在 Thonny 工作,所以我的问题不是如何让 playsound 工作。
在 Stack Overflow 上,我发现许多相关或类似的问题,形式为“x 适用于 y 但不适用于 z”和“没有名为 xx 的模块”错误。作为一个相对较新的 Python 用户,我正在寻找的是关于如何理解 Python 寻找模块等的不同路径的指导,具体取决于一个人如何执行 Python 代码。
以下是我所做的实验和我的观察:
当我在 Thonny(Thonny 版本 2.1.16、Python 版本 3.6.7、Tk 版本 8.6.8)中运行最小代码时,它失败并出现“No module named gi”错误。
当我在 IDLE(IDLE 版本 3.6.7、Python 版本 3.6.7、Tk 版本 8.6.8)中运行相同的 Python 程序时,它可以正常工作,并且会发出警报声。
在 Ubuntu (18.04) 终端中,
$ which python
显示:/usr/bin/python$ python3 ./playSiren.py
正确运行并发出声音
现在在命令提示符下执行 python3
$蟒蛇3
Linux 上的 Python 3.6.7(默认,2018 年 10 月 22 日,11:32:17)[GCC 8.2.0]
现在我复制并粘贴了两条 Python 代码行,并在 Python 提示符下运行它们。代码再次正确运行并发出声音。
- 我在最小代码中添加了一个 shebang 行并将其更改为可执行文件,然后从 Ubuntu 提示符运行它。
代码再次正确运行并产生声音
- 当我跑:
sudo apt-get install python3-gi
,
我收到消息:
python3-gi is already the newest version (3.26.1-2ubuntu1).
在空闲时:
>>> 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 (most recent call last):
File "<pyshell>", line 1, in <module>
ModuleNotFoundError: No module named 'gi'
sys.path
在托尼:
/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/')
不过,我No module named 'gi'
在 Thonny 上遇到了错误。
如果 IDLE 显示 gi 模块/usr/lib/python3/dist-packages/gi/__init__.py
在sys.path
. 为什么它不起作用?
然后我附加了以下内容:
sys.path.append("/usr/lib/python3/dist-packages")
现在,不再出现“没有名为'gi'的模块”错误,并且正确播放声音会产生警笛声!