python - 尽管有“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
在我的存储库中本地的某个地方,只是这样调用它,虽然我觉得就像必须有一个更直观的解决方法一样。
我也完全有可能误解了psycopg2
vs 二进制文件的使用,我应该在部署时使用前者,但我不知道它在 linux 环境中需要什么依赖项?
很高兴根据需要提供更多上下文。
谢谢!
解决方案
我确定我通过“解决方案”使问题过于复杂——我错误地认为最好的方法是使用psycopg2-binary
,因为我无法找出正确的依赖关系。经过一点点挖掘后,我能够通过在之前运行以下命令来确定这psyocopg2
将与python:3.7.4-slim
图像一起使用(除其他外 - 我确信这也会级联到其他发行版)pip install
:
apt-get update && apt-get -y install libpq-dev gcc
psycopg2
与二进制相比,这似乎是所有需要使用的东西。
推荐阅读
- mysql - 使用 docker build 从基础镜像构建 MySQL 镜像?
- kotlin - 是否可以在 Kotlin 中添加运算符重载扩展功能?
- javascript - 有没有办法使用类中的函数创建对象,例如:bullets[i] = new player1.bullet();?
- php - 如何从 Twig 中的变量加载图像?(使用 AsseticBundler)
- java - 尝试在 @After 方法中使用来自 @Test 方法的结果图像
- python - Pyinstaller - OSError:无法识别图像文件(枕头)
- python - 有没有办法查看字符串是否与字典键匹配以及是否打印其值?Python
- pandas - 使用熊猫在字典中的数据框中插入一行并删除行
- laravel - 如何在 FormRequest 中使用自定义验证?
- angular - 从后端检索日期时禁用日期不起作用| 角度日期选择器