未找到pg_config可执行文件

我有麻烦的安装心理2.我得到以下错误时,我尝试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上。

1078473 次浏览

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

尝试将其添加到PATH:

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

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

sudo apt-get install libpq-dev python-dev

文章来源:如何在VirtualEnv下安装InfoCopg2

apt-get build-dep python-psycopg2

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

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

2)pg_config文件(该文件通常驻留在PostgreSQL安装文件夹的bin文件夹中)PATH必须在安装infcopg2之前显式设置。在我的情况下,PostgreSQL的安装PATH是:

/opt/local/lib/postgresql91/

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

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

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

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

更新 /etc/yum.repos.d/CentOS-Base.repo,[base]和[更新]部分
添加排除=postgresql*

curl -O http://yum.postgresql.org/9.1/redhat/rhel-6-i386/pgdg-centos91-9.1-4.noarch.rpmrrpm -ivh pgdg-centos91-9.1-4.noarch.rpm
yum install postgresqlyum install postgresql-devel
PATH=$PATH:/usr/pgsql-9.1/bin/
pip install psycopg2

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

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

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

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

或较新版本:

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

接下来,我们将安装PICCOPG2。

我很确定你也遇到过和我一样的“问题”,因此我将为你提供一个非常简单的解决方案。

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

/usr/pgsql-9.1/bin/pg_config

没有

/usr/pgsql-9.1/bin

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

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

也许太晚了,但这是最简单的方法。

后期编辑:

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

/usr/pgsql-9.1/bin

(没有 /pg_config之后……/bin)并运行pip install命令它将工作。

但是,如果您决定按照指示运行pythonsetup.py,则必须在……/bin之后 /pg_config指定路径,即:

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

sudo yum安装postgresql-devel(centos6X)

pip安装infcopg2==2.5.2

在Mac OS X上,我使用自制包管理器解决了它

brew install postgresql

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

这就是我如何设法安装心理医生2

$ 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 .

在Gentoo上,您必须执行以下操作

# Install postgresql client librariessudo emerge postgresql-base

在Windows上,您可能需要安装WindowsPortsCompg,这是在心理医生留档了中推荐的。

这是我在CentOS上的工作,首先安装:

sudo yum install postgresql postgresql-devel python-devel

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

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

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

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

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

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

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

1)安装Postgres.app:

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

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

导出PATH=$PATH:/应用程序/Postgres.app/Contents/Versions/\{\{version}}/bin

e. g.

导出PATH=$PATH:/应用程序/Postgres.app/Contents/Versions/9.4/bin

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

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

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

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

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

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

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

并做

pip install psycopg2

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

来源

安装python-psy COP g 2在ArchLinux上为我解决了这个问题:

pacman -S python-psycopg2

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

您需要先升级您的pip,然后再安装stercopg2。使用此命令

pip install --upgrade pip

在高山上,包含pg_config的库是#1。要安装,请运行:

apk add postgresql-dev

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

sudo apt-get install libpq-dev python-dev

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

LinuxMintsudo apt-get install libpq-dev为我工作。

在MAC Mojave上,如果您使用brew安装了它,请执行以下操作brew info <your postgres>

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

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

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

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

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

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

Error: pg_config executable not found.

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

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

首先要做的是安装一些软件包,以便我们的pip安装命令成功完成。为此,让我们创建一个名为. eb扩展/01_packages.config的文件:

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

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

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

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

首先将PostgreSQL bin文件夹添加到path变量中,如下所示

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

用你的Postgres版本替换\11\

下次跑步

pip install pyscopg2

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

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

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

python -m pip install psycopg2-binary

conda install psycopg2

请注意,二进制pypi页面建议在生产中从源代码构建:

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

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

  • 一个C编译器
  • python头文件。它们通常安装在#0之类的包中。error: Python.h: No such file or directory之类的消息表明Python标头丢失。
  • libpq头文件。它们通常安装在#0这样的包中。如果你得到error: libpq-fe.h: No such file or directory,你就错过了它们。
  • #0程序:它通常由libpq-dev0包安装,但有时它不在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_config来编译psycopg2,而不是为了它的常规用法。

一旦一切就位,这只是运行标准的问题:

$ pip install psycopg2

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

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

对于那些在macOS Catalina上使用zsh shell并且还安装了postgres应用程序的用户

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

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

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

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

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

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

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

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

一个简单的解决方案可以

pip install psycopg2==2.7.5

对于mac用户,扩展您的路径变量以包含PostgreSQL,就像这样export PATH=$PATH:/Library/PostgreSQL/12/bin

如果您使用的是mac,请确保您已在计算机中安装PostgreSQL。

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

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

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

您可以使用二进制文件代替,当Django尝试将其作为其依赖项的一部分安装时,我在docker化应用程序时遇到了问题,为了解决这个问题,我使用此设置requirements.txt首先安装二进制文件,然后django不会再次尝试安装它:二进制djangoGunicorn

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

按照pipenv安装错误输出中的建议安装psycopg2_binary,一切都会好起来的。

这是以前部分提出的,为了清楚起见在这里添加。

https://www.psycopg.org/docs/install.html留档。
他们建议运行:$pip安装心理医生2二进制

这为我解决了这个问题。

对于MAC用户-

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

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

然后你可以再次pip installpsycopg2包应该工作。

如果您有最近更新的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 wheelexport PATH=/path/to/compiled/postgresql/bin:"$PATH"sudo apt-get install libpq-devsudo apt-get install python3.x-dev    **Change x with your version, eg python3.8**pip install psycopg2-binarypip install psycopg2

您必须安装lib pq-dev/post gre sql-lib s文件格式,它是用于编译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

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

sudo apt-get install --reinstall libpq-dev

只需运行以下命令:

sudo apt install libpq-dev

为我修复了这个问题

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

  1. 安装postgres(如果未安装,请参阅这个
  2. 安装libpq-dev

sudo apt-get安装libpq-dev

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

brew install postgresql

这应该解决这个问题。

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

sudo apt install libpq-dev

它为我工作。

我在OracleLinux7.9上安装这个库时遇到了很大的问题。无论我做什么,我都无法通过pip安装infcopg2。所以我决定使用以下命令通过yum安装它:

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

使用此命令安装了infcopg2,我可以通过anable创建postgres用户、数据库。(我知道这是第六十个答案,但我希望这个答案仍然可以帮助某人)。

使用postgreql-devel for redhat/fedora系列解决了这个问题。

yum install postgresql-devel

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