You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Heroku生产环境额外安装psycopg包的原因排查求助

Heroku生产环境额外安装psycopg包的原因排查求助

我有一个基于Python/Django的应用,用Pipfile和Pipfile.lock管理依赖,运行在Heroku-22栈上,采用经典buildpack部署。项目里没有requirements.txt,所以那种因缺失requirements.txt导致的模块找不到问题和我的情况不相关。

我的Pipfile和Pipfile.lock里只指定了psycopg2(不是psycopg2-binary)。测试环境安装的包完全符合预期,但生产环境却多出来一个psycopg包,具体对比如下:

生产环境依赖情况

$ heroku run bash -a my-app-production
~ $ pip freeze | grep -i psyco
psycopg==3.2.4
psycopg2==2.9.10

测试环境依赖情况

$ heroku run bash -a my-app-testing
~ $ pip freeze | grep -i psyco
psycopg2==2.9.10

测试和生产环境只有一个差异:生产环境开启了服务器端的Pgbouncer连接池。我知道Pgbouncer的依赖里包含psycopg,但根据Heroku的文档,Pgbouncer是运行在数据库服务器上的,并不在应用的dyno里,按道理不该影响应用的依赖安装结果。

另外我本地用Docker容器,通过pipenv install --deploy命令安装依赖(Heroku部署时也是用这个命令),结果完全正常,不会多出psycopg包。

有没有人能帮我排查下这个额外的psycopg包是哪里来的?会不会真的是Pgbouncer导致的?我感觉不太可能,但实在想不到其他环境差异了。

备注:内容来源于stack exchange,提问作者Dušan Maďar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 18:40:28