Python 包只能在空闲或解释器中正常工作,但不能独立工作?

Python 包只能在空闲或解释器中正常工作,但不能独立工作?,python,audio,python-idle,Python,Audio,Python Idle,我一直在尝试将音频提示添加到我正在使用Py Audiiere开发的程序中。但是,只有当我在IDlE中使用run命令(或手动将其放入解释器)时,并且只有在以特定方式完成调用时,才会播放声音。这是代码片段: import audiere filename = 'Bell' d = audiere.open_device() filename += '.mp3' bell = d.open_file(filename) bell.repeating = True def play_tone():

我一直在尝试将音频提示添加到我正在使用Py Audiiere开发的程序中。但是,只有当我在IDlE中使用run命令(或手动将其放入解释器)时,并且只有在以特定方式完成调用时,才会播放声音。这是代码片段:

import audiere

filename = 'Bell'
d = audiere.open_device()
filename += '.mp3'
bell = d.open_file(filename)
bell.repeating = True

def play_tone():
    bell.play()

play_tone()
如果我在空闲时间以外运行它,什么也不会发生。如果我在空闲状态下运行它,但将它全部移动到函数中并传递文件名,则不会发生任何事情


我很困惑这个库是怎么回事,现在我甚至不确定我是否应该使用这个库。是否有人知道正在发生什么或有其他选择(我考虑过GStreamer,但我无法理解他们的文档)?

我对audiere进行了一些实验(以前从未听说过这个库),它看起来像是在背景中的新线程中播放声音

在您的代码片段中,您告诉audiere开始播放铃声,但您从未给它足够的时间来完全播放铃声。当您在空闲或Python解释器中运行它时,这并不重要,因为Python进程仍在运行,因此声音只在后台播放

他们有一个小片段,展示了如何实现这一点:

import time
def play_tone():
    bell.play()
    while bell.playing:
        time.sleep(0.1)

至于gstreamer,如果您以前从未使用过它,文档可能会有点复杂。我发现学习如何使用它的最好方法就是用它做实验。这是一个很好的起点,它解释了gstreamer如何工作的基本原理。这显示了如何使用它播放单个声音文件。如果您想仔细阅读,这也很有帮助。

如果PyAudiere找不到您指定的文件,它会怎么做?