可执行文件pg_config未找到。

1457
我安装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路径添加到setup.cfg文件中,并使用从网站(http://initd.org/psycopg/)下载的源文件进行构建,但是出现了以下错误信息!
Error: Unable to find 'pg_config' file in '/usr/pgsql-9.1/bin/'

但实际上它就在那里!!!

这些错误让我感到困惑。请有人能帮忙吗?

顺便说一下,我用sudo执行了所有命令。另外,我使用的是RHEL 5.5。


9
当您使用sudo命令运行命令时,$PATH会发生变化。请确认您作为root用户的$PATH是否正确。 - Hugo Lopes Tavares
3
在我的情况下,我运行了 ln -s /usr/pgsql-9.1/bin/pg_config /usr/sbin/pg_config ,一切正常! - CK.Nguyen
当我尝试安装pip3 install psycopg2时,我也遇到了这个错误。所以我先运行brew install postgresql,然后再运行pip3 install psycopg2。 - TheLastCodeBender
58个回答

1378

pg_configpostgresql-devel中(在Debian/Ubuntu中为libpq-dev,在Centos/Fedora/Cygwin/Babun中为libpq-devel)。


136
在Ubuntu Lucid(10.04)上安装了libpq-dev后问题得到解决。先行致谢。 - pylover
35
postgress.app 的 pg_config 文件位于 /Applications/Postgres.app/Contents/Versions/<your version>/bin (适用于 Mac OS X)。 - Tim Daubenschütz
29
在 Fedora 上,需要安装 libpqxx-devel - robsn
167
在Ubuntu系统中,sudo apt-get install libpq-dev这个命令对我有效。 - Bill Cheatham
77
在Alpine Linux上:apk add postgresql-dev - R J
显示剩余19条评论

787

在 Mac OS X 上,我使用 homebrew 软件包管理器解决了它。

brew install postgresql

56
太棒了!这解决了我的问题,但新手应该知道,在使用brew命令之前,您需要先安装 Homebrew 软件包管理器。 - seane
29
那不是安装整个数据库吗? - zmbq
15
我需要额外的 brew link postgresql - vincentlcy
1
为了补充@seane的评论,使用**这个演示文稿**来安装homebrew - Srini
1
对于苹果芯片(例如M1,M2),请使用以下命令:arch -arm64 brew install postgresql,参见:https://dev59.com/XcXsa4cB1Zd3GeqPe24R#74374419 - Mikolaj Buchwald
显示剩余6条评论

388

3
不确定是否需要python-dev。 - juanitogan
24
需要安装python3-dev,否则会出现“Python.h: No such file or directory”的错误提示。 - krubo
6
还需要安装一个依赖项,执行命令 apt-get install -y gcc - Anum Sheraz
2
我已经安装了 python3-dev,但在安装了 libpq-dev 之前仍然遇到了相同的错误,谢谢! - mj3c
1
升级到Python 3.9后,我需要执行以下命令:sudo apt install python3.9-dev - twk
显示剩余6条评论

124

同样适用于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"


11
如果您不想重新启动控制台,您也可以使用以下命令:PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH" pip install psycopg2,这将帮助您完成安装。请注意,此命令将修改您的环境变量以便在安装期间包含PostgreSQL路径。 - Bernardo Duarte
完美的BigSur Apple Silicon,运行得非常顺畅。我已将其添加到~/.zshrc中,以便随时可用。 - Doogle
在 Mac Monterey 上工作过。 - Krishnadas PC

106
您可以使用pipconda在任何平台上安装预编译的二进制文件:
python -m pip install psycopg2-binary

或者

conda install psycopg2

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

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

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

一个 C 编译器。 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:如果返回错误或意外的版本号,则定位包含正确 libpq 版本的 pg_config 的目录(通常为 /usr/lib/postgresql/X.Y/bin/),并将其添加到 PATH 中: $ export PATH=/usr/lib/postgresql/X.Y/bin/:$PATH 只有在编译 psycopg2 时才需要 pg_config,对于其常规使用不需要。

Once everything is in place it’s just a matter of running the standard:

$ pip install psycopg2

or, from the directory containing the source code:

$ python setup.py build
$ python setup.py install

在Ubuntu上,我需要先安装libpq-dev库,然后再次运行pip install命令:apt install libpq-dev - Benjamin
那在 Mac OS X 上解决了这个问题,无需完全安装 PostgreSQL。 - Oren Yosifon
感谢您指出文档建议从源代码构建的建议。我赞同这个建议 - 开发人员应该使用此答案的后半部分,避免预打包的二进制文件,即使是大多数开发目的也是如此。 - Jason R Stevens CFA
因为回答不清晰,所以被踩了。此外,你的英语有些不太流利。 - X T
这适用于弹性 Beanstalk。 - user14475872

87
对于Ubuntu用户,这是解决方案:
sudo apt install libpq-dev

它对我有效。


2
在 Arch/Manjaro 上,它是 postgresql-libs - Stonecraft
1
它对我也起作用了。这里的问题是什么?libpq-dev有什么用? - Pfinnn
@Pfinnn 当 pip 构建 psycopg2 模块时,它需要使用 libpq-dev。可能存在一些 psychopg2 依赖的库 -- 比如用于处理连接的类,也许。 - Joshua Burns

56

在 Alpine 上,包含pg_config的库是postgresql-dev。要安装,请运行:

apk add postgresql-dev

53
这是在CentOS上为我工作的方法,首先安装:
sudo yum install postgresql postgresql-devel python-devel

在Ubuntu上,只需使用相应的apt-get软件包即可。
sudo apt-get install postgresql postgresql-dev python-dev

现在在pip安装时,将您的postgresql二进制目录路径包含进去,这对于Debian或RHEL基于的Linux都适用。
sudo PATH=$PATH:/usr/pgsql-9.3/bin/ pip install psycopg2

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

1
在Ubuntu上,可以使用sudo apt-get install postgresql postgresql-dev python-dev命令进行安装,这对我来说很有效。 - modulitos
4
截至2016年12月,它也适用于亚马逊Linux AMI。同时确保已安装“gcc”和“python3-devel”。 - villasv
在亚马逊 Linux 上,第一条命令运行得很好。 - thanos.a

41

您需要安装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

1
因为详细解释了问题的确切原因,所以点赞。 - holdenweb

38

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

brew install postgresql

这应该可以解决问题。


是的,我正在更新 Django 的 requirement.txt 文件。我遇到了上述错误。当我在 M1 Mac 上安装 arch -arm64 brew install postgresql 后,问题得到了解决。 - Anil Gupta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接