找不到pg_config可执行文件

时间:2012-07-23 19:09:41

标签: python pip psycopg2

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

51 个答案:

答案 0 :(得分:567)

pg_config位于postgresql-devel(Debian / Ubuntu为libpq-dev,Cygwin / Babun为libpq-devel。)

答案 1 :(得分:243)

在Mac OS X上,我使用homebrew包管理器

解决了这个问题
brew install postgresql

答案 2 :(得分:161)

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

sudo apt-get install libpq-dev python-dev

来自文章:How to install psycopg2 under virtualenv

答案 3 :(得分:58)

同样在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"

答案 4 :(得分:36)

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

apk add postgresql-dev

答案 5 :(得分:36)

apt-get build-dep python-psycopg2

答案 6 :(得分:29)

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

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

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

/opt/local/lib/postgresql91/

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

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

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

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

答案 7 :(得分:26)

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

答案 8 :(得分:22)

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

答案 9 :(得分:21)

这对CentOS有用,首先安装:

sudo yum install postgresql postgresql-devel python-devel

在Ubuntu上只使用equivilent 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

确保包含正确的路径。多数民众赞成:)

答案 10 :(得分:19)

更新/etc/yum.repos.d/CentOS-Base.repo, [base]和[updates]部分
ADD 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

答案 11 :(得分:18)

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

1)安装Postgres.app:

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

2)然后打开终端并运行此命令,用Postgres版本号替换{{version}}所在的位置:

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

e.g。

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

答案 12 :(得分:17)

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

答案 13 :(得分:16)

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。

答案 14 :(得分:15)

只需运行以下命令:

sudo apt install libpq-dev

帮我解决了这个问题

答案 15 :(得分:15)

尝试将其添加到PATH:

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

答案 16 :(得分:10)

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

pip install --upgrade pip

答案 17 :(得分:9)

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

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

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

答案 18 :(得分:9)

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

答案 19 :(得分:8)

这对我有用:

ivFoodImage2?.let{
  it.setImageResource(image)
}

答案 20 :(得分:7)

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

答案 21 :(得分:6)

以前曾部分建议过,为清楚起见在此添加。

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

那为我解决了这个问题。

答案 22 :(得分:6)

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

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

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

答案 23 :(得分:5)

这里,对于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

答案 24 :(得分:5)

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

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

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

并做

pip install psycopg2

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

Source

答案 25 :(得分:5)

运行以下命令来解决 pg_config executable not found:-

sudo apt-get install --reinstall libpq-dev

答案 26 :(得分:5)

sudo yum install postgresql-devel(centos6X)

pip install psycopg2 == 2.5.2

答案 27 :(得分:4)

如果您试图在虚拟环境中添加psycopg2依赖关系,这将允许您的python项目连接到在Mac上单独运行PostgreSQL的docker或kubernetes pod,并且对安装并没有真正的兴趣在Mac just 上使用postgresql,以便获取pg_config,这是您要做的:

根据pipenv安装错误输出中的建议安装psycopg2_binary,一切正常。

答案 28 :(得分:4)

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

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

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

答案 29 :(得分:4)

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

pip install psycopg2-binary

conda install psycopg2

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

  

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

答案 30 :(得分:4)

对于Mac用户,扩展您的path变量以包括export PATH=$PATH:/Library/PostgreSQL/12/bin这样的PostgreSQL。

答案 31 :(得分:2)

这就是我设法安装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
$ python setup.py install

答案 32 :(得分:1)

对于CentOS / RedHat,请确保/etc/alternatives/pgsql-pg_config是一个未破坏的符号链接

答案 33 :(得分:1)

对于 MAC 用户 -

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

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

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

答案 34 :(得分:1)

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

  1. 安装 postgres(如果未安装,请参阅 this
  2. 安装 libpq-dev
<块引用>

sudo apt-get install libpq-dev

答案 35 :(得分:1)

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

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

startDate

用您的Postgres版本替换endDate

下次运行

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

这至少使我陷入了编译错误。

更新:psycopg2库似乎是一个问题,其依赖项在python 3.8中的运行效果不佳。 https://github.com/psycopg/psycopg2/issues/990

答案 36 :(得分:1)

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

这是当您遇到以下错误时作者的解释:

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实例运行Redhat风格的Amazon Linux,因此我们可以使用yum安装所需的软件包。现在,我们将只安装三个软件包-git,Postgres客户端和用于Pillow的libjpeg。

答案 37 :(得分:1)

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

pacman -S python-psycopg2

答案 38 :(得分:1)

On Gentoo你必须执行以下

# Install postgresql client libraries
sudo emerge postgresql-base

答案 39 :(得分:1)

我很确定你经历过同样的问题&#34;我做到了,因此我会为您提供极其简单的解决方案......

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

/usr/pgsql-9.1/bin/pg_config

/usr/pgsql-9.1/bin

E.g。如果你之后运行python setup.py脚本,你可以像这样运行它:

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

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

LATER EDIT:

在进一步测试中,我发现如果您最初以

的形式添加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

答案 40 :(得分:0)

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

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

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

答案 41 :(得分:0)

快速了解pip的工作原理pip-> python2和pip3-> python3,因此,如果您要在python 3上解决此问题,可以简单地sudo pip3 install psycopg2工作,也许。

答案 42 :(得分:0)

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

pip install psycopg2==2.7.5

答案 43 :(得分:0)

对于使用zsh shell且已安装postgres app的macOS Catalina上的用户:

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

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

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

如果您不想关闭终端,只需在要继续使用的任何终端上输入source ~/.zshrc

答案 44 :(得分:0)

如果您使用的是Mac,请确保已在计算机上安装了Postgresql。

答案 45 :(得分:0)

您可以改用二进制文件,当Django尝试将其作为依赖项的一部分进行安装时,我遇到了将应用程序进行docker化的问题,为解决此问题,我将此设置用于requirements.txt,其中先安装了二进制文件,然后django不会尝试再次安装它: psycopg2-binary 詹戈 金枪鱼

答案 46 :(得分:0)

如果您最近更新了 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

答案 47 :(得分:0)

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

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

答案 48 :(得分:0)

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

brew install postgresql

这应该可以解决问题。

答案 49 :(得分:-1)

Windows:

  1. 安装PostgreSQL。 pg_config在PostgreSQL的'bin'文件夹中。
  2. 将PostgreSQL“ bin”文件夹的路径添加到Windows PATH环境变量:

PATH:C:\ Program Files \ PostgreSQL \ 9.5 \ bin;

答案 50 :(得分:-2)

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

它将显示您应设置的所有环境变量,只需复制粘贴这些命令,然后重新启动外壳即可!