找不到pg_config可执行文件


767

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


8
当您运行命令时sudo,会$PATH被更改。您能否以root用户身份仔细检查$ PATH?
雨果·塔瓦雷斯

1
就我而言,我跑步ln -s /usr/pgsql-9.1/bin/pg_config /usr/sbin/pg_config,一切正常!
阮阮

谢谢@ CK.Nguyen,您的小费对我确实有用。
Pratibha

Answers:


761

pg_config位于postgresql-devellibpq-devlibpq-develCentos / Cygwin / Babun的Debian / Ubuntu中。)


66
libpq-dev在ubuntu lucid(10.04)上安装后解决。先感谢您。
pylover

22
pg_config的postgress.app是在/Applications/Postgres.app/Contents/Versions/<your version>/bin(的Mac OS X)
添Daubenschütz

17
这是libpqxx-devel在Fedora。
robsn 2015年

54
sudo apt-get install libpq-dev在Ubuntu上为我工作
Bill Cheatham

48
在Alpine Linux上:apk添加postgresql-dev
RJ

383

在Mac OS X上,我使用自制软件包管理器解决了该问题

brew install postgresql

29
优秀的!这为我解决了问题,但是新手应该意识到,您需要先安装Homebrew软件包管理器,才能使brew命令起作用。
seane 2014年

即使我在pgadmin安装后进行了brew安装,也为我工作。
哈纳尔

8
那不是安装整个数据库吗?
zmbq 2016年

3
我需要额外的内容brew link postgresql
Vincentlcy

1
要添加到@seane的评论中,请使用此演练进行安装homebrew
Bruce Wayne

235

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

sudo apt-get install libpq-dev python-dev

从文章:如何在virtualenv下安装psycopg2


在我的计算机上,我仅安装Postgresql的客户端,因此必须安装libpq-dev和python-dev。
bnPYSse 2014年

2
怀疑是否需要python-dev。
juanitogan '16

谢谢
阿伦(Arun)

4
需要python3-dev。没有它,我得到Python.h: No such file or directory
krubo

1
为此需要的另一个依赖关系是apt-get install -y gcc
Anum Sheraz

74

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


3
@GianlucaLodigiani如果您不想重新启动控制台,也可以执行此操作PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH" pip install psycopg2
Bernardo Duarte


38

这是在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

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


1
在Ubuntu上是sudo apt-get install postgresql postgresql-dev python-dev,这对我有用。
modulitos 2014年

2
从2016年12月起,它也可以在Amazon Linux AMI上使用。还要确保gcc已安装和python3-devel。
villasv

谢谢!!!它也可以在Fedora 32 Workstation上运行!
Marcelo Gazzola


34

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

sudo apt-get install libpq-dev python-dev

32

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

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

2)在安装psycopg2之前,必须显式设置pg_config文件(该文件通常位于PostgreSQL安装文件夹的bin文件夹中)。就我而言,PostgreSQL的安装路径为:

/opt/local/lib/postgresql91/

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

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

此命令可确保当您尝试通过pip安装psycopg2时,它将自动找到pg_config的路径。

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


6
对我来说,在OS X上,路径看起来像这样PATH="/Applications/Postgres.app/Contents/Versions/9.3/bin:$PATH"
andilabs 2014年

@andi是的,Postgres的安装路径可能不同,但是我上面提到的psycopg2的安装方法仍然相同。希望能有所帮助。
Ali Raza Bhayani 2014年

30

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


如果您使用较新的Ubuntu,请仍然使用上述安装说明。参见pg_config
palik

23

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


21

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

python -m pip install psycopg2-binary

要么

conda install psycopg2

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

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

要使用从源构建的软件包,请使用python -m pip install psycopg2。该过程将需要几个依赖项(文档)(重点是我的):

  • 交流编译器
  • Python的头文件。它们通常安装在python-dev之类的软件包中。诸如错误消息:Python.h:没有这样的文件或目录表示缺少Python标头。
  • libpq的头文件。它们通常安装在libpq-dev之类的软件包中。如果出现错误:libpq-fe.h:没有此类文件或目录,您将丢失它们。
  • pg_config程序:它通常是由安装的libpq-dev的包,但有时它是不是在路径目录。将它放在PATH中可以大大简化安装,因此请尝试运行pg_config --version:如果返回错误或意外的版本号,请找到包含正确libpq版本附带的pg_config的目录(通常是/ usr / lib / postgresql / XY / bin /)并将其添加到PATH: $ export PATH=/usr/lib/postgresql/X.Y/bin/:$PATH 您仅需要pg_config来编译psycopg2,而无需常规使用。

在Ubuntu上,我需要先安装libpq-dev库,然后再次运行pip install命令:apt install libpq-dev
Benjamin

20

UPDATE /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

20

对于运行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
Subin Sebastian

17

尝试将其添加到PATH:

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

-bash: cd: /usr/pgsql-x.x/bin/: No such file or directory
pylover

@pylover,您需要使用正确的路径到Postgres bin目录。您确定/usr/pgsql-x.x/bin/正确吗?
Marboni

仅添加所有重要pg_文件所在的文件夹就足够了。对于postgres.app,在Mac OS X上,此路径为/Applications/Postgres.app/Contents/Versions/9.3/bin。 如果发布了新版本,PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin 请更新您的版本*
TimDaubenschütz15年

这在OS X El Capitan上对我有用:PATH=$PATH:/usr/local/Cellar/postgresql/9.5.0/bin/
David Hariri

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。


1
较新的文档使用以下路径:/Applications/Postgres.app/Contents/Versions/9.3/bin
jpimentel 2014年

它似乎确实在前进。find /usr/local -name 'pg_config'
Praxeolitic

11

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

pip install --upgrade pip

在大多数情况下,更详细的答案可能会有所帮助。
bkausbk

11

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


这对我不起作用。只brew install postgresql修复它。
tsando

您可能需要pip install psycopg2-binary帮我:pip-> python2,pip3-> python3。但是,只要您能正常工作,它就是许多解决方案之一!
DuDoff

9

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

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

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


9

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

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

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

并做

pip install psycopg2

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

资源




8

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

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

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


为我工作,虽然不必须藤。谢谢!
John Ottenlips

确实为我工作!
Hadnazzar

5

sudo yum安装postgresql-devel(centos6X)

点安装psycopg2 == 2.5.2


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毫无问题地运行。


4

对于使用zshshell的macOS Catalina 上也安装了postgres应用程序的用户

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

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

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

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


这在Macos和zshShell 上对我有用!
Aditya Rao

4

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


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 .

2

我敢肯定,您会遇到与我相同的“问题”,因此,我将为您提供极为简单的解决方案...

在您的情况下,您需要添加到$ 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之后没有/ 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

将pgsql / bin目录添加到PATH的另一种方法是将符号链接/usr/pgsql-9.6/bin/pg_config(或在系统上调用的名称)符号链接/usr/bin/pg_config-使其在您已经拥有的PATH中可用。
拉尔夫·博尔顿

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.