部署至Heroku时出现PyAudio-0.2.11-cp38-cp38-win_amd64.whl不支持当前平台错误的求助
这个问题我太熟了——你遇到的是典型的跨平台wheel不兼容问题!你本地装的是Windows专属的PyAudio wheel包,但Heroku的服务器是Linux环境,根本认不出Windows版本的轮子文件。下面给你一步步解决的方案:
第一步:清理requirements.txt里的Windows wheel引用
如果你在requirements.txt里直接写了PyAudio-0.2.11-cp38-cp38-win_amd64.whl或者本地wheel的路径,立刻删掉这行,换成标准的依赖声明:PyAudio>=0.2.11原因很简单:Heroku的Linux服务器无法识别Windows平台编译的wheel包,必须让pip自动适配目标环境。
第二步:添加系统依赖的Buildpack
PyAudio依赖portaudio19-dev这个系统库,Heroku默认没有预装,所以需要通过apt buildpack来安装:- 先在终端执行命令添加buildpack:
(heroku buildpacks:add --index 1 heroku-community/apt--index 1是为了确保apt buildpack在Python buildpack之前运行,先装系统依赖) - 在项目根目录创建一个名为
Aptfile的文件,里面只写一行:portaudio19-dev
- 先在终端执行命令添加buildpack:
第三步:确保Python版本一致
检查Heroku上的Python版本和你本地的3.8是否匹配:
在项目根目录创建runtime.txt文件,写入对应版本(比如):python-3.8.19避免因为Python版本不匹配导致pip找不到对应兼容的PyAudio包。
备选方案:如果PyAudio还是装不上
要是上面的步骤还是遇到编译问题,可以试试用sounddevice库替代PyAudio——它同样基于PortAudio,API更简洁,在Heroku上的安装兼容性更好。只需要把requirements里的PyAudio换成:sounddevice>=0.4.6然后代码里调整一下调用逻辑就行。
内容的提问来源于stack exchange,提问作者Asjad Rizvi

