Poetry python:如何使用从 Docker 运行的 Postgres 安装 Psycopg2

Kha*_*ham 4 python postgresql psycopg2 docker python-poetry

我在我的旧笔记本电脑上设置了一个项目,并在本地安装了 Postgresql,并使用 Poetry 作为包管理器。现在我搬到另一台笔记本电脑上。在这一项上,我想使用 Docker 中的 Postgres,所以我没有安装它。但是当我运行poetry install从文件设置项目时poetry.lock,它无法安装 Psycopg2 并出现错误:

Error: pg_config executable not found.
Run Code Online (Sandbox Code Playgroud)

据我搜索,它需要在本地安装 Postgres。那么,如何使用 Docker 中的 Postgres 从锁定文件安装 Psycopg2?

The*_*ool 5

您不需要安装 Postgres 本身,但需要libpq

libpq 是 C 应用程序程序员与 PostgreSQL 的接口。libpq 是一组库函数,允许客户端程序将查询传递到 PostgreSQL 后端服务器并接收这些查询的结果。

libpq 也是其他几个 PostgreSQL 应用程序接口的底层引擎,包括为 C++、Perl、Python、Tcl 和 ECPG 编写的接口。因此,如果您使用这些软件包之一,libpq 行为的某些方面对您来说非常重要。特别是,第 34.15 节、第 34.16 节和第 34.19 节描述了使用 libpq 的任何应用程序的用户可见的行为。

因此,pyscopg2 文档建议安装软件包python3-devlibpq-dev.

sudo apt install python3-dev libpq-dev 
Run Code Online (Sandbox Code Playgroud)

以下内容写在他们的文档中:

Psycopg 是 libpq PostgreSQL 客户端库的 C 包装器。要从源安装它,您将需要:

AC编译器。

Python 头文件。它们通常安装在 python-dev 或 python3-dev 等包中。诸如错误:Python.h:没有这样的文件或目录之类的消息表明 Python 标头丢失。

libpq 头文件。它们通常安装在 libpq-dev 等软件包中。如果您收到错误:libpq-fe.h:没有这样的文件或目录,则您丢失了它们。

pg_config 程序:它通常由 libpq-dev 包安装,但有时不在 PATH 目录中。将其放在 PATH 中可以极大地简化安装,因此请尝试运行 pg_config --version:如果它返回错误或意外的版本号,则找到包含正确 libpq 版本附带的 pg_config 的目录(通常是 /usr/lib/postgresql/ XY/bin/) 并将其添加到路径中:

$ export PATH=/usr/lib/postgresql/X.Y/bin/:$PATH
Run Code Online (Sandbox Code Playgroud)

如果您不想这样做,您可以通过 python 包使用预编译的二进制文件psycopg2-binary,尽管并不真正推荐。