找不到 pg_config 可执行文件

Posted

技术标签:

【中文标题】找不到 pg_config 可执行文件【英文标题】:pg_config executable not found 【发布时间】:2012-07-22 01:33:08 【问题描述】:

我在安装 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 上。

【问题讨论】:

当您以sudo 运行命令时,$PATH 会更改。您能否以 root 身份再次检查您的 $PATH? 就我而言,我运行ln -s /usr/pgsql-9.1/bin/pg_config /usr/sbin/pg_config,一切正常! 【参考方案1】:

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

【讨论】:

在 ubuntu lucid(10.04) 上安装 libpq-dev 后解决。提前致谢。 pg_config of postgress.app 位于 /Applications/Postgres.app/Contents/Versions/<your version>/bin (Mac OS X) 在 Fedora 上是 libpqxx-devel sudo apt-get install libpq-dev 在 Ubuntu 上为我工作 在 Alpine Linux 上:apk add postgresql-dev【参考方案2】:

在 Mac OS X 上,我使用 homebrew 包管理器解决了这个问题

brew install postgresql

【讨论】:

太棒了!这解决了我的问题,但新手应该知道,您需要先安装 Homebrew 包管理器才能使 brew 命令工作。 也为我工作,即使我在 pgadmin 安装后进行了 brew 安装。 那不是安装整个数据库吗? 我需要额外的brew link postgresql 要添加到@seane 的评论,请使用this walkthrough 安装homebrew【参考方案3】:

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

sudo apt-get install libpq-dev python-dev

来自文章:How to install psycopg2 under virtualenv

【讨论】:

在我的电脑上,我只安装了Postgresql的客户端,所以你必须安装libpq-dev和python-dev。 怀疑是否需要 python-dev。 它帮助了我。谢谢 python3-dev 是必需的。没有它我得到Python.h: No such file or directory 为此需要的另一个依赖是apt-get install -y gcc【参考方案4】:

也在 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"

【讨论】:

@GianlucaLodigiani 如果您不想重启控制台,也可以这样做PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH" pip install psycopg2 完美的 BigSur Apple Silicon 像魅力一样工作。我确实将相同的内容添加到 ~/.zshrc 以便它始终可供我使用。【参考方案5】:

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

python -m pip install psycopg2-binary

conda install psycopg2

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

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

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

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:如果它返回错误或意外的版本号,则找到包含pg_config 的目录,其中包含正确的libpq 版本(通常为@987654339) @) 并将其添加到PATH:
$ export PATH=/usr/lib/postgresql/X.Y/bin/:$PATH

你只需要pg_config来编译psycopg2,而不是它的日常使用。

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

$ pip install psycopg2

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

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

【讨论】:

在 Ubuntu 上,我需要先安装 libpq-dev 库,然后再次运行 pip install 命令:apt install libpq-dev 在 Mac OS X 上解决了这个问题,不需要完全安装 postgresql 感谢您指出文档建议从源代码构建。我支持这个建议——开发人员应该使用这个答案的后半部分,并避免使用预打包的二进制文件,即使对于大多数开发目的也是如此。【参考方案6】:

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

apk add postgresql-dev

【讨论】:

【参考方案7】:

这在 CentOS 上对我有用,首先安装:

sudo yum install postgresql postgresql-devel python-devel

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

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

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

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

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

【讨论】:

在 Ubuntu 上是 sudo apt-get install postgresql postgresql-dev python-dev,这对我有用。 自 2016 年 12 月起也适用于 Amazon Linux AMI。还要确保已安装 gcc 并安装 python3-devel。【参考方案8】:
apt-get build-dep python-psycopg2

【讨论】:

【参考方案9】:

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

sudo apt-get install libpq-dev python-dev

【讨论】:

【参考方案10】:

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

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。

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

【讨论】:

对于我在 OS X 上的路径看起来像这样 PATH="/Applications/Postgres.app/Contents/Versions/9.3/bin:$PATH" @andi 是的,Postgres 的安装路径可能不同,但我上面提到的 psycopg2 的安装方法保持不变。希望它有所帮助。【参考方案11】:

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

【讨论】:

如果您使用较新的 Ubuntu,仍然使用上述安装说明。见pg_config【参考方案12】:

您必须安装 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

【讨论】:

【参考方案13】:

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

【讨论】:

【参考方案14】:

对于那些运行 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

【讨论】:

或者符号链接到最新版本sudo ln -s /Applications/Postgres.app/Contents/Versions/latest/bin/pg_config /usr/local/bin/pg_config 在我的 Mac 上,我从 ~/.zprofile 文件中导出了 PATH。【参考方案15】:

更新 /etc/yum.repos.d/CentOS-Base.repo、[base] 和 [updates] 部分 添加排除=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

【讨论】:

【参考方案16】:

尝试将其添加到 PATH:

PATH=$PATH:/usr/pgsql-9.1/bin/ ./pip install psycopg2

【讨论】:

-bash: cd: /usr/pgsql-x.x/bin/: No such file or directory @pylover,您需要使用正确的 Postgres bin 目录路径。你确定/usr/pgsql-x.x/bin/ 是正确的吗? 添加所有重要的pg_ 文件所在的文件夹就足够了。对于 postgres.app,Mac OS X 上的这个路径是/Applications/Postgres.app/Contents/Versions/9.3/binPATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin如果有新版本发布,请更新您的版本* 这在 OS X El Capitan 上对我有用:PATH=$PATH:/usr/local/Cellar/postgresql/9.5.0/bin/【参考方案17】:

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。

【讨论】:

较新的文档使用以下路径:/Applications/Postgres.app/Contents/Versions/9.3/bin 它似乎在移动。 find /usr/local -name 'pg_config'【参考方案18】:

只需运行以下命令:

sudo apt install libpq-dev

为我解决了问题

【讨论】:

【参考方案19】:

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

【讨论】:

这对我不起作用。只有brew install postgresql 修复了它。 您可能必须为我pip install psycopg2-binary:pip -> python2,pip3 -> python3。但只要你让它工作,它就是众多解决方案之一! 解决了我在使用 docker 时遇到的问题。【参考方案20】:

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

sudo apt install libpq-dev

它对我有用。

【讨论】:

【参考方案21】:

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

pip install --upgrade pip

【讨论】:

在大多数情况下,更详细的答案可能会有所帮助。【参考方案22】:

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

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

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

【讨论】:

对我有用,但不必 sudo。谢谢! 确实适合我! 在 macOS 11.01,M1 芯片上,创建符号链接对我有用:sudo ln -s /Library/PostgreSQL/13/bin/pg_config /usr/local/bin/pg_config【参考方案23】:

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

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

无需在此命令中指定 Postgres 的版本。它将始终指向最新的。

然后做

pip install psycopg2

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

Source

【讨论】:

【参考方案24】:

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

pacman -S python-psycopg2

【讨论】:

Windows 怎么样? @PrathameshMore 我不知道,我不使用 Windows。您是否尝试过这个答案:***.com/a/25767749/5660517?【参考方案25】:

在 Windows 上, 您可能需要安装Windows port of Psycopg,这是psycopg's documentation 中推荐的。

【讨论】:

【参考方案26】:

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

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

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

【讨论】:

【参考方案27】:

这里,为了 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

【讨论】:

感谢您提供特定于 MacPorts 的答案! ?? 我找不到,这对我有用。【参考方案28】:

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

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

这解决了我的问题。

【讨论】:

【参考方案29】:

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

brew install postgresql

这应该可以解决问题。

【讨论】:

【参考方案30】:

致那些在 macOS Catalina 上使用 zsh shell 并同时安装了 postgres app 的用户:

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

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

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

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

【讨论】:

这也适用于 big sur。

以上是关于找不到 pg_config 可执行文件的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 10 上找不到 pg_config 可执行文件

Mac + virtualenv + pip + postgresql = 错误:找不到 pg_config 可执行文件

如何修复错误:在 Elastic Beanstalk 上永久找不到 pg_config 可执行文件

错误:在 Gitlab Runner 中找不到 pg_config 可执行文件

在 Windows 7 x64 上使用 pgxnclient 时找不到 pg_config 可执行文件

错误:在 Docker 中的 Alpine 上安装 psycopg2 时找不到 pg_config 可执行文件