Python playsound在空闲状态下工作,但提供;没有名为“gi”的模块;Thonny中的错误;Ubuntu终端中的混合结果
我试图使用Python3中playsound模块中的playsound函数。我从测试中获得了一个火警声音的mp3文件,并保存为siren1.mp3 最小代码:Python playsound在空闲状态下工作,但提供;没有名为“gi”的模块;Thonny中的错误;Ubuntu终端中的混合结果,python,ubuntu,playsound,sys.path,Python,Ubuntu,Playsound,Sys.path,我试图使用Python3中playsound模块中的playsound函数。我从测试中获得了一个火警声音的mp3文件,并保存为siren1.mp3 最小代码: from playsound import playsound playsound('siren1.mp3') 最初,我试图在Thonny中运行最小的两行Python代码,但无法使其工作,因为它给出了“No module named gi”错误 这让我尝试了各种各样的方法,发现其中一些有效,而另一些无效。因为我最终设
from playsound import playsound
playsound('siren1.mp3')
最初,我试图在Thonny中运行最小的两行Python代码,但无法使其工作,因为它给出了“No module named gi”错误
这让我尝试了各种各样的方法,发现其中一些有效,而另一些无效。因为我最终设法让playsound在Thonny工作,所以我的问题不是如何让playsound工作
在stackoverflow上,我发现了许多相关或类似的问题,如“x在y上工作,但在z上不工作”和“没有模块名为xx”错误。作为一个相对较新的Python用户,我需要的是关于如何理解Python查找模块所采用的不同路径的指导,这取决于执行Python代码的方式
以下是我做的实验和观察结果:
$whichpython
”显示:
/usr/bin/python
$python3./playSiren.py
正确运行并发出声音$ python3
Python 3.6.7(默认,2018年10月22日,11:32:17)
Linux上的[GCC 8.2.0]
现在,我复制并粘贴了两个python代码行并运行它们
在python提示符上。
代码再次正确运行并发出声音
sudo apt get install python3 gi
>>> import gi
>>> gi
在Thonny:
>>> import gi
回溯(最近一次呼叫最后一次):
文件“”,第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
/usr/lib/python3/dist packages/gi/_init__.py
,我希望Thonny在将其附加到sys.path时也能找到gi。为什么它不起作用
然后我附加了以下内容:
sys.path.append("/usr/lib/python3/dist-packages")
现在,再也没有“没有名为'gi'的模块”的错误了
正确播放声音产生了警报声 我假设您已经从Thonny的主页安装了Thonny+Python捆绑包。在本例中,Thonny使用自己独立的Python解释器,它有自己的包 调整
sys.path
以包含其他解释器的包是不可靠的。它可能只适用于Python包,但如果另一个解释器是不同的(例如3.6 vs 3.7),并且包(部分)是用C实现的,它肯定不起作用
您应该为Thonny的Python安装所有必需的软件包(“Tools=>Manage packages”将按用户安装,这意味着它们在相同版本的所有解释器之间共享),或者让Thonny使用您的系统解释器来运行程序(Tools=>Options=>解释器)。我推荐后者。我假设您已经从Thonny的主页安装了Thonny+Python包。在本例中,Thonny使用自己独立的Python解释器,它有自己的包 调整
sys.path
以包含其他解释器的包是不可靠的。它可能只适用于Python包,但如果另一个解释器是不同的(例如3.6 vs 3.7),并且包(部分)是用C实现的,它肯定不起作用
您应该为Thonny的Python安装所有必需的软件包(“Tools=>Manage packages”将按用户安装,这意味着它们在相同版本的所有解释器之间共享),或者让Thonny使用您的系统解释器来运行程序(Tools=>Options=>解释器)。我向ubuntu/debian用户推荐后者。来自官方
执行sudo apt install libgirepository1.0-dev gcc libcairo2 dev pkg config python3 dev gir1.2-gtk-3.0
以安装构建依赖项和gtk
执行pip3安装pycairo以构建和安装pycairo
执行pip3 install PyGObject,为ubuntu/debian用户从官方网站构建并安装PyGObject
执行sudo apt install libgirepository1.0-dev gcc libcairo2 dev pkg config python3 dev gir1.2-gtk-3.0
以安装构建依赖项和gtk
执行pip3安装pycairo以构建和安装pycairo
执行
pip3安装PyGObject来构建和安装PyGObject
我使用了Thonny的管理软件包来安装playsound。但是managepackages找不到名为gi的模块。然而,正如您所建议的,当我使用Tool=>Options=>interpreter选择解释器时,playsound确实可以正常工作,而无需调整sys.path。谢谢。我用Thonny的管理软件包安装了playsound。但是managepackages找不到名为gi的模块。然而,正如您所建议的,当我使用Tool=>Options=>interpreter选择解释器时,playsound确实可以正常工作,而无需调整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
sys.path.append('/usr/lib/python3/dist-packages/gi/__init__.py')
sys.path.append('/usr/lib/python3/dist-packages/gi/')
sys.path.append("/usr/lib/python3/dist-packages")