Django部署Heroku调用pygame提示缺少libasound.so.2如何解决?
问题根因
从运行日志可直接定位错误触发点为代码中pygame.mixer.init()调用。libasound.so.2是Linux系统ALSA音频框架的核心依赖库,Heroku-20栈(基于Ubuntu 20.04)的默认运行环境没有预装该系统级依赖,因此本地环境运行正常、部署后报错。
另外你的应用当前构建slug大小为319.5M,已超出Heroku官方300M软限制,后续可能出现启动超时、部署失败问题,建议同步优化依赖体积。
解决方案
方案一(推荐):移除服务端pygame音频逻辑
你的应用为Web类应用,疲劳检测的提示音完全可以由前端实现播放,服务端运行在无音频输出设备的容器中,调用pygame.mixer本身没有实际意义。直接删除服务端的pygame相关代码、从requirements.txt中移除pygame依赖即可解决问题,同时可大幅缩减slug体积。
方案二:安装缺失的系统依赖
如果必须保留服务端pygame相关逻辑,可通过Heroku的apt buildpack安装缺失的系统依赖:
- 在项目根目录新建名为
Aptfile的文件,写入以下内容:
libasound2 libasound2-dev
- 执行以下命令为你的Heroku应用添加apt buildpack,确保其优先级高于Python buildpack:
heroku buildpacks:add --index 1 heroku-community/apt - 将
Aptfile提交到Git仓库后重新执行git push heroku master部署即可。
内容的提问来源于stack exchange,提问作者123anon123
相关产品推荐
相关产品推荐

