可执行文件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个回答

7
运行以下命令来解决找不到 pg_config 可执行文件 的问题:
sudo apt-get install --reinstall libpq-dev

6

对于Mac用户,将您的路径变量扩展到包括PostgreSQL,像这样 export PATH=$PATH:/Library/PostgreSQL/12/bin


6

我建议您尝试使用Postgres.app。(http://postgresapp.com)这样,您可以轻松地在Mac上启用和禁用Postgres。一旦您这样做了,通过添加以下内容将Postgres路径添加到您的.profile文件:

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

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


5

有关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

5

对于那些没有在本地安装Postgresql但希望将其作为Docker容器运行的人,应该使用psycopg2-binary


5

在CentOS 6X系统中,使用以下命令安装PostgreSQL开发库:

sudo yum install postgresql-devel

使用pip安装psycopg2版本为2.5.2:

pip install psycopg2==2.5.2


4
如果你想在虚拟环境中添加一个psycopg2的依赖项,以便让你的 Python 项目可以连接到运行在 PostgreSQL 上的 Docker 或 Kubernetes Pod,并且不想在 Mac 上安装 PostgreSQL 只是为了获取 pg_config,那么你可以按照以下步骤操作:

按照 pipenv 安装时产生的错误信息中的建议,安装 psycopg2_binary 即可,这样一切都会正常工作。


4
一个简单的解决方案可以是:
pip install psycopg2==2.7.5

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 .

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目录下运行pip install命令(没有/pg_config),它将可以正常工作。

但是,如果你决定按照指示运行python setup.py,则必须在...../bin之后指定路径为/pg_config。

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

一个我经常使用的添加 pgsql/bin 目录到 PATH 的替代方法是将 /usr/pgsql-9.6/bin/pg_config(或者在你的系统上叫什么就用什么)建立符号链接到 /usr/bin/pg_config - 这样它就可以在你已有的 PATH 中使用了。 - Ralph Bolton

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