如何使用Python中的sounddevice模块使用pyinstaller获取正常工作的EXE文件

时间:2017-12-02 18:28:16

标签: python pyinstaller

不幸的是,pyinstaller的声音设备模块存在问题。

我编写了下面的代码,但是当我使用pyinstaller创建一个EXE文件时,dist文件夹中的EXE文件不起作用。使用pyinstaller的制作过程成功完成,但EXE文件不起作用。

代码是:

import sounddevice as sd

fs=44100
duration =2 # seconds
print('Start')
myrecording = sd.rec(duration * fs, samplerate=fs,    channels=2,dtype='float64')
sd.wait()
print('play')
sd.play(myrecording, fs)
print('end')

2 个答案:

答案 0 :(得分:0)

问题可能是您执行sd.play()后程序是否已退出?

尝试用sd.play(myrecording, fs, blocking=True)

替换该行

另外,sounddevice不是一个完美的库,所以你需要做一些额外的调整才能使它工作:

在您的EXE所在的目录中,添加一个名为_sounddevice_data的目录,并将this file放入该文件夹(如果您使用的是Python 64位)或this一个(如果你正在使用Python 32位)。

尝试运行EXE,它应该可以工作!

希望这有帮助!

答案 1 :(得分:0)

所选答案没有用,但有所帮助。

对我来说,可行的解决方案是在.exe文件所在的位置添加 _sounddevice_data 文件夹,然后在其中创建一个 portaudio-binaries 文件夹,最后将最新创建的文件夹中的libportaudio64bit.dll

希望有帮助!