1156

我在安装 psycopg2 时遇到问题。尝试时出现以下错误pip install psycopg2

Error: pg_config executable not found.

Please add the directory containing pg_config to the PATH

or specify the full executable path with the option:



    python setup.py build_ext --pg-config /path/to/pg_config build ...



or with the pg_config option in 'setup.cfg'.

----------------------------------------
Command python setup.py egg_info failed with error code 1 in /tmp/pip-build/psycopg2

但问题pg_config实际上出在我的PATH; 它运行没有任何问题:

$ which pg_config
/usr/pgsql-9.1/bin/pg_config

我尝试将 pg_config 路径添加到文件并使用从他们的网站 ( http://initd.org/psycopg/setup.cfg )下载的源文件构建它,我收到以下错误消息!

Error: Unable to find 'pg_config' file in '/usr/pgsql-9.1/bin/'

但它实际上是存在的!!!

我对这些错误感到困惑。有人可以帮忙吗?

顺便说一句,我sudo所有的命令。我也在 RHEL 5.5 上。

4

52 回答 52

1127

pg_config位于postgresql-devellibpq-dev在 Debian/Ubuntu 中,libpq-devel在 Centos/Fedora/Cygwin/Babun 上。)

于 2012-08-20T11:51:48.440 回答
603

On Mac OS X, I solved it using the homebrew package manager

brew install postgresql
于 2014-07-09T04:28:14.497 回答
327

你安装了python-dev吗?如果您已经有,请尝试安装libpq-dev

sudo apt-get install libpq-dev python-dev

来自文章:如何在 virtualenv 下安装 psycopg2

于 2013-01-20T11:51:21.980 回答
104

也在 OSX 上。从http://postgresapp.com/安装 Postgress.app但有同样的问题。

pg_config在该应用程序的内容中找到并将目录添加到$PATH.

它在/Applications/Postgres.app/Contents/Versions/latest/bin. 所以这行得通:export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH".

于 2014-07-10T19:26:28.190 回答
72

pip您可以使用或在任何平台上安装预编译的二进制文件conda

python -m pip install psycopg2-binary

或者

conda install psycopg2

请注意,psycopg2-binary pypi 页面建议在生产环境中从源代码构建:

二进制包是开发和测试的实用选择,但在生产中建议使用从源代码构建的包

要使用从源代码构建的包,请使用python -m pip install psycopg2. 该过程将需要几个依赖项(文档)(强调我的):

  • 交流编译器
  • Python 头文件. 它们通常安装在一个包中,例如python-dev. 诸如error: Python.h: No such file or directory表示缺少 Python 标头的消息。
  • libpq 头文件。它们通常安装在一个包中,例如libpq-dev. 如果你得到一个error: libpq-fe.h: No such file or directory,你就会想念他们。
  • pg_config程序:它通常由软件包安装,但libpq-dev有时它不在PATH目录中。将它放入PATH极大地简化了安装,因此请尝试运行pg_config --version:如果它返回错误或意外的版本号,则找到包含pg_config正确libpq版本(通常/usr/lib/postgresql/X.Y/bin/)的目录并将其添加到PATH
$ export PATH=/usr/lib/postgresql/X.Y/bin/:$PATH

您只需要pg_configcompile psycopg2,而不是常规使用。

一切就绪后,只需运行标准即可:

$ pip install psycopg2

或者,从包含源代码的目录中:

$ python setup.py build
$ python setup.py install
于 2019-11-21T21:28:58.483 回答
53

在 alpine 上,包含的库pg_configpostgresql-dev. 要安装,请运行:

apk add postgresql-dev
于 2017-07-06T01:16:23.863 回答
47

这是在 CentOS 上对我有用的方法,首先安装:

sudo yum install postgresql postgresql-devel python-devel

在 Ubuntu 上,只需使用等效的 apt-get 软件包。

sudo apt-get install postgresql postgresql-dev python-dev

现在在 pip install 中包含 postgresql 二进制目录的路径,这应该适用于基于 Debain 或 RHEL 的 Linux:

sudo PATH=$PATH:/usr/pgsql-9.3/bin/ pip install psycopg2

确保包含正确的路径。就这样 :)

于 2014-11-20T15:16:26.360 回答
37
apt-get build-dep python-psycopg2
于 2013-02-08T19:04:05.250 回答
35

您应该在 Ubuntu 上添加 Postgres 中使用的 python 要求。跑:

sudo apt-get install libpq-dev python-dev
于 2017-09-08T06:54:08.767 回答
34

总结一下,我也面临完全相同的问题。在阅读了很多 stackoverflow 帖子和在线博客之后,对我有用的最终解决方案是:

1) 安装 psycopg2 之前应安装 PostgreSQL(开发或任何稳定版本)。

2) pg_config 文件(该文件通常位于 PostgreSQL 安装文件夹的 bin 文件夹中)PATH 必须在安装 psycopg2 之前显式设置。就我而言,PostgreSQL 的安装路径是:

/opt/local/lib/postgresql91/

因此,为了显式设置 pg_config 文件的 PATH,我在终端中输入了以下命令:

PATH=$PATH:/opt/local/lib/postgresql91/bin/

此命令确保当您尝试 pip install psycopg2 时,它会自动找到 pg_config 的 PATH。

我还在我的博客上发布了有关跟踪的完整错误及其解决方案,您可能想参考。它适用于 Mac OS X,但 pg_config PATH 问题是通用的,也适用于 Linux。

于 2013-07-05T06:46:03.670 回答
32

sudo apt-get install libpq-dev在 Ubuntu 15.4 上为我工作

于 2016-12-07T22:34:30.640 回答
30

您必须安装libpq-dev/postgresql-libs,这是用于编译 C 程序以与 libpq 库链接的头文件和静态库,以便与 PostgreSQL 数据库后端进行通信。

在 Arch 上,这将运行:

$ sudo pacman -S postgresql-libs

在 Debian 和 Ubuntu 上:

$ sudo apt-get install libpq-dev

在 Mac OS X 上:

$ brew install postgresql

在 Red Hat/CentOS/Fedora 上:

$ sudo yum install postgresql-devel
于 2021-01-09T22:27:46.910 回答
23

对于 ubuntu 用户,这是解决方案:

sudo apt install libpq-dev

它对我有用。

于 2021-10-04T18:12:01.537 回答
23

在 Linux Mintsudo apt-get install libpq-dev上为我工作。

于 2017-12-18T02:13:02.890 回答
22

对于那些运行 OS X 的人来说,这个解决方案对我有用:

1) 安装 Postgres.app:

http://www.postgresql.org/download/macosx/

2) 然后打开终端并运行此命令,将 {{version}} 替换为 Postgres 版本号:

导出 PATH=$PATH:/Applications/Postgres.app/Contents/Versions/{{version}}/bin

例如

导出 PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.4/bin

于 2015-03-26T11:11:46.910 回答
21

更新 /etc/yum.repos.d/CentOS-Base.repo、[base] 和 [updates] 部分
添加 exclude=postgresql*

curl -O http://yum.postgresql.org/9.1/redhat/rhel-6-i386/pgdg-centos91-9.1-4.noarch.rpmr  
rpm -ivh pgdg-centos91-9.1-4.noarch.rpm

yum install postgresql  
yum install postgresql-devel

PATH=$PATH:/usr/pgsql-9.1/bin/

pip install psycopg2
于 2013-09-03T10:04:48.883 回答
18

Ali 的解决方案对我有用,但我无法找到 bin 文件夹位置。在 Mac OS X 上查找路径的一种快速方法是打开 psql(顶部菜单栏中有一个快速链接)。这将打开一个单独的终端窗口,在第二行,您的 Postgres 安装路径将如下所示:

My-MacBook-Pro:~ Me$ /Applications/Postgres93.app/Contents/MacOS/bin/psql ; exit;

您的 pg_config 文件位于该 bin 文件夹中。因此,在安装 psycopg2 之前设置 pg_config 文件的路径:

PATH=$PATH:/Applications/Postgres93.app/Contents/MacOS/bin/

或更新版本:

PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin

然后安装 psycopg2。

于 2013-12-31T16:45:25.633 回答
18

尝试将其添加到 PATH:

PATH=$PATH:/usr/pgsql-9.1/bin/ ./pip install psycopg2
于 2012-08-20T12:16:12.960 回答
18

只需运行以下命令:

sudo apt install libpq-dev

为我解决了这个问题

于 2021-02-11T09:02:51.297 回答
16

我将把它留给下一个不幸的灵魂,尽管提供了所有解决方案,但他们仍无法解决这个问题。只需使用sudo pip3 install psycopg2-binary

于 2019-09-27T10:50:03.793 回答
13

在安装 psycopg2 之前,您需要升级您的 pip。使用此命令

pip install --upgrade pip
于 2017-03-10T08:17:15.210 回答
12

在 MacOS 上,最简单的解决方案是对 Postgres 包下的正确二进制文件进行符号链接。

sudo ln -s /Applications/Postgres.app/Contents/Versions/latest/bin/pg_config /usr/local/bin/pg_config

这是相当无害的,如果需要,所有应用程序都可以在系统范围内使用它。

于 2019-08-04T06:59:03.617 回答
11

在 Mac OS X 上,如果您使用的是 Postgres 应用程序 ( http://postgresapp.com/ ):

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin

无需在此命令中指定 Postgres 的版本。它总是指向最新的。

pip install psycopg2

PS:如果更改没有反映您可能需要重新启动终端/命令提示符

资源

于 2016-10-26T06:41:26.600 回答
10

我遇到了这个问题,因为我没有安装 postgres。如果你有 brew install 运行

brew install postgresql

这应该可以解决问题。

于 2021-07-23T15:03:48.507 回答
10

在 Arch Linux 上安装python-psycopg2为我解决了这个问题:

pacman -S python-psycopg2
于 2016-10-28T09:07:14.673 回答
9

On Windows, You may want to install the Windows port of Psycopg, which is recommended in psycopg's documentation.

于 2014-09-10T14:15:13.943 回答
9

刚刚通过以下方式解决了 Cent OS 7 中的问题:

export PATH=$PATH:/usr/pgsql-9.5/bin

确保您的 PostgreSql 版本与上面的正确版本匹配。

于 2016-04-17T18:44:13.957 回答
7

在这里,为了 OS X 的完整性:如果你从 MacPorts 安装 PostgreSQL,pg_config 将在/opt/local/lib/postgresql94/bin/pg_config.

当您安装 MacPorts 时,它已经添加/opt/local/bin到您的 PATH 中。

因此,这将解决问题: $ sudo ln -s /opt/local/lib/postgresql94/bin/pg_config /opt/local/bin/pg_config

现在pip install psycopg2将能够pg_config毫无问题地运行。

于 2015-04-29T18:36:19.627 回答
7

这部分是之前提出的,为了清楚起见,在此处添加。

来自https://www.psycopg.org/docs/install.html的文档。
他们建议运行: $ pip install psycopg2-binary

这为我解决了这个问题。

于 2020-09-24T08:33:45.337 回答
7

对于那些在 macOS Catalina 上使用zshshell 并且还安装了postgres 应用程序的人:

打开您的~/.zshrc文件,并添加以下行:

export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"

然后关闭所有终端,重新打开它们,您的问题就解决了。

如果您不想关闭终端,只需输入source ~/.zshrc您想继续工作的任何终端。

于 2019-11-27T00:15:06.910 回答
6

运行以下命令来解决找不到pg_config 可执行文件:-

sudo apt-get install --reinstall libpq-dev
于 2021-01-24T17:16:09.923 回答
5

sudo yum 安装 postgresql-devel (centos6X)

pip install psycopg2==2.5.2

于 2014-04-08T08:00:21.920 回答
5

我建议您尝试使用 Postgres.app。( http://postgresapp.com ) 这样您就可以轻松地在 Mac 上打开和关闭 Postgres。完成后,通过附加以下内容将 Postgres 的路径添加到您的 .profile 文件中:

PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"

只有在将 Postgres 添加到路径后,您才能尝试在虚拟环境(使用 pip)或全局站点包中安装 psycopg2。

于 2020-04-29T15:29:56.683 回答
5

对于 mac 用户,扩展您的路径变量以包含 PostgreSQL,如下所示export PATH=$PATH:/Library/PostgreSQL/12/bin

于 2020-03-01T14:14:55.777 回答
4

如果您尝试psycopg2在您的虚拟环境中添加一个依赖项,该依赖项将允许您的 python 项目连接到您的 docker 或 kubernetes pod,这些 pod 在您的 Mac 上单独运行 postgresql,并且对在您的 Mac 上安装 postgresql 并不真正感兴趣,这样您可以得到 pg_config,你可以这样做:

psycopg2_binary按照 pipenv 安装的错误输出中的建议进行安装,一切都会正常进行。

于 2020-07-28T19:32:39.993 回答
4

Windows用户缺乏答案。这是我解决这个问题的方法。

首先像这样将 PostgreSQL bin 文件夹添加到路径变量中

set PATH=%PATH%;C:\Program Files\PostgreSQL\11\bin

\11\用你的 Postgres 版本替换

下一次运行

pip install pyscopg2

这至少让我遇到了编译错误。

更新:它看起来是 psycopg2 库的一个问题,它的依赖关系在 python 3.8 中表现不佳。https://github.com/psycopg/psycopg2/issues/990

于 2019-10-17T20:53:22.823 回答
4

一个简单的解决方案可以是

pip install psycopg2==2.7.5
于 2020-02-02T08:21:33.987 回答
3

我很确定您遇到过与我相同的“问题”,因此我将为您提供极其简单的解决方案...

在您的情况下,您需要添加到 $PATH (或作为命令参数)的实际路径是:

/usr/pgsql-9.1/bin/pg_config

不是

/usr/pgsql-9.1/bin

例如,如果你之后运行 python setup.py 脚本,你会像这样运行它:

python setup.py build_ext --pg-config /usr/pgsql-9.1/bin/pg_config build

可能为时已晚,但仍然是最简单的解决方案。

后期编辑:

在进一步的测试中,我发现如果您最初在表单中添加 pg_config 的路径

/usr/pgsql-9.1/bin

(在...../bin 之后没有/pg_config)并运行 pip install 命令它将起作用。

但是,如果您随后决定按照指示运行 python setup.py,则必须在 ...../bin 之后使用 /pg_config 指定路径,即

python setup.py build_ext --pg-config /usr/pgsql-9.1/bin/pg_config build
于 2014-01-30T12:16:48.053 回答
3

这就是我设法安装 psycopg2 的方式

$ wget http://initd.org/psycopg/tarballs/PSYCOPG-2-5/psycopg2-2.5.3.tar.gz
$ tar -xzf psycopg2-2.5.3.tar.gz
$ cd psycopg2-2.5.3
$ pip install .
于 2014-08-07T02:59:51.833 回答
2

对于 CentOS/RedHat 确保这/etc/alternatives/pgsql-pg_config是一个完整的符号链接

于 2017-09-20T11:21:13.127 回答
1

在 Gentoo 你必须执行以下操作

# Install postgresql client libraries
sudo emerge postgresql-base
于 2014-09-04T12:16:21.017 回答
1

对于在 Django 应用程序上工作并部署到 AWS 时遇到此问题的任何人,本教程中描述的方法对我有用:https ://realpython.com/deploying-a-django-app-and-postgresql-to-aws-elastic -豆茎/

以下是作者对出现以下错误时的解释:

Error: pg_config executable not found.

问题是我们尝试安装 psycopy2(Postgres Python 绑定),但我们还需要安装 Postgres 客户端驱动程序。由于默认情况下没有安装它们,因此我们需要先安装它们。

eb 将从项目根目录中名为“.ebextensions”的文件夹中读取自定义 .config 文件。这些 .config 文件允许您安装软件包、运行任意命令和/或设置环境变量。“.ebextensions”目录中的文件应符合 JSON 或 YAML 语法,并按字母顺序执行。

首先要做的是安装一些包,这样我们的 pip install 命令才能成功完成。为此,让我们创建一个名为 .ebextensions/01_packages.config 的文件:

packages:
  yum:
    git: []
    postgresql93-devel: []
    libjpeg-turbo-devel: []

EC2 实例运行 Amazon Linux,这是一种 Redhat 风格,因此我们可以使用 yum 来安装我们需要的包。现在,我们只需要安装三个包——git、Postgres 客户端和用于 Pillow 的 libjpeg。

于 2019-08-27T20:45:26.837 回答
1

我在Oracle Linux 7.9上安装这个库有很大的问题。无论我在做什么,我都无法通过 pip 安装 psycopg2。所以我决定用这个命令通过 yum 安装它:

yum install http://mirror.centos.org/centos/7/os/x86_64/Packages/python-psycopg2-2.5.1-4.el7.x86_64.rpm

使用此命令安装了 psycopg2,我可以通过 ansible 创建 postgres 用户 DB。(我知道这就像第六十个答案,但我希望这个答案仍然可以帮助某人)。

于 2021-10-15T11:53:08.263 回答
1

对于 MAC 用户 -

通过 HomeBrew添加postgresql软件包后,您可能需要添加openssl路径变量 -

export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/

然后你可以再次使用应该工作pip install的包。psycopg2

于 2020-12-20T11:46:50.733 回答
1

如果您最近更新了 python 或更改了默认 python(比如说从 3.6 到 3.8)。以下代码

sudo apt-get install python-dev   OR    sudo apt-get install python3-dev

将为以前的 python 版本安装/工作。

因此,如果您希望此命令适用于最近更新/更改的 python 版本,请尝试在命令中提及特定版本,例如 python3.8

sudo apt-get install python3.8-dev  

在上面尝试以下

pip install wheel
export PATH=/path/to/compiled/postgresql/bin:"$PATH"
sudo apt-get install libpq-dev
sudo apt-get install python3.x-dev    **Change x with your version, eg python3.8**
pip install psycopg2-binary
pip install psycopg2
于 2020-12-26T06:40:32.390 回答
1

以下步骤为我解决了这个问题(ubuntu 18.04)

  1. 安装 postgres(如果没有安装,请参考这个)
  2. 安装 libpq-dev

sudo apt-get install libpq-dev

于 2021-04-19T08:52:09.383 回答
0

我发现这个页面提供了在我的 mac 上安装 PostgreSQL 的最佳说明,并且 pip install 命令在之后完美运行:

https://www.codefellows.org/blog/three-battle-tested-ways-to-install-postgresql

于 2015-01-06T09:55:55.697 回答
0

我通过运行以下命令解决了这个问题。

env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip install psycopg2

参考:https ://stackoverflow.com/a/39800677/4270698

于 2019-12-09T01:52:38.247 回答
0

您可以改用二进制文件,当 Django 尝试将其作为其依赖项的一部分安装时,我在对应用程序进行 dockerizing 时遇到了问题,为了解决这个问题,我将此设置用于 requirements.txt,其中首先安装了二进制文件,然后 django 执行不要尝试再次安装它:psycopg2-binary django gunicorn

于 2020-07-23T17:51:57.763 回答
0

如果您使用的是 mac,请确保您已在您的机器中安装了 Postgresql。

于 2020-03-03T08:00:21.310 回答
-2

在 MAC Mojave 上,如果您使用 brew 安装了它,则执行 brew info <your postgres>

它将向您显示您应该设置的所有环境变量,只需复制粘贴这些命令,重新启动您的 shell 就可以了!

于 2019-02-12T02:27:32.997 回答
-3

快速了解 pip 的工作原理pip-> python2 和pip3-> python3,所以如果你想在 python 3 上解决这个问题,你可以简单地sudo pip3 install psycopg2这样做,可能。

于 2019-12-17T03:32:06.427 回答