首页 > 解决方案 > 尽管有“psycopg2-binary”,但没有名为“psycopg2.extensions”的模块

问题描述

我正在尝试利用 Django 项目开发,psycopg2但是当我在 Docker 容器中部署时遇到python:3.7.4-slim了“no pg_config”问题,因此我确定了在进行一些挖掘之后继续进行的最佳方法,psycopg2-binary因为这似乎是推荐的前进方式。

现在唯一的问题是,当我尝试python manage.py <...>从本地运行命令时出现错误:

ModuleNotFoundError: No module named 'psycopg2.extensions'

我不确定如何继续,因为psycopg2在本地可以正常工作,但我们最终将把这个资源容器化并将它放在一个 k8s 集群中,所以我相当确定二进制库是正确的方法。有没有人想出一个在psycopg2.extensions不牺牲使用二进制发行版的完整性的情况下引入的解决方案?

我的主要抱怨是我不明白为什么psycopg2会附带这个extensions模块,而binary不会,在这一点上,感觉就像解决方法是暴力存储extensions在我的存储库中本地的某个地方,只是这样调用它,虽然我觉得就像必须有一个更直观的解决方法一样。

我也完全有可能误解了psycopg2vs 二进制文件的使用,我应该在部署时使用前者,但我不知道它在 linux 环境中需要什么依赖项?

很高兴根据需要提供更多上下文。

谢谢!

标签: pythondjangopsycopg2

解决方案


我确定我通过“解决方案”使问题过于复杂——我错误地认为最好的方法是使用psycopg2-binary,因为我无法找出正确的依赖关系。经过一点点挖掘后,我能够通过在之前运行以下命令来确定这psyocopg2将与python:3.7.4-slim图像一起使用(除其他外 - 我确信这也会级联到其他发行版)pip install

apt-get update && apt-get -y install libpq-dev gcc

psycopg2与二进制相比,这似乎是所有需要使用的东西。


推荐阅读