将Django应用部署至Heroku时遇psycopg2版本识别错误求助
解决Heroku部署Django时psycopg2兼容PostgreSQL 10.1的问题
这个错误的核心原因是你当前使用的psycopg2版本太旧,不支持PostgreSQL 10.x系列版本,而Heroku的PostgreSQL服务当时正运行在10.1版本上,导致安装过程中无法识别数据库版本,最终触发egg_info失败。
下面是具体的解决步骤:
替换为预编译的psycopg2-binary(推荐)
直接在requirements.txt里把psycopg2替换成psycopg2-binary,这个包是预编译好的二进制版本,不需要在Heroku上编译,不仅能避开版本兼容问题,还能加快部署速度。修改后的内容类似:Django==x.x.x psycopg2-binary>=2.8.0 # 其他依赖...或者升级psycopg2到兼容版本
如果你坚持要用源码版的psycopg2,可以指定一个支持PostgreSQL 10的版本,从2.7.4开始就支持10.x系列了,所以在requirements.txt里写:psycopg2>=2.7.4提交修改并重新推送
完成修改后,执行以下命令提交并重新部署:git add requirements.txt git commit -m "Update psycopg2 to support PostgreSQL 10.1" git push heroku master
额外补充:如果你的Django版本比较老旧,可能也会存在间接兼容性问题,建议确保Django版本在1.11及以上(该版本开始正式支持PostgreSQL 10),不过绝大多数情况下,核心问题还是出在psycopg2的版本上。
内容的提问来源于stack exchange,提问作者Rahul Verma
相关产品推荐
相关产品推荐

