找不到pg_config可执行文件

use*_*207 646 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
Run Code Online (Sandbox Code Playgroud)

但问题pg_config实际上是在我的PATH; 它运行没有任何问题:

$ which pg_config
/usr/pgsql-9.1/bin/pg_config
Run Code Online (Sandbox Code Playgroud)

我尝试将pg_config路径添加到该setup.cfg文件并使用我从其网站(http://initd.org/psycopg/)下载的源文件构建它,我收到以下错误消息!

Error: Unable to find 'pg_config' file in '/usr/pgsql-9.1/bin/'
Run Code Online (Sandbox Code Playgroud)

但实际上它就是!!!

我对这些错误感到困惑.有人可以帮忙吗?

顺便说一句,我sudo所有的命令.我也在RHEL 5.5上.

Til*_*ann 664

pg_configpostgresql-devel(libpq-dev在Debian/Ubuntu,libpq-devel在Cygwin/Babun.)

  • 在ubuntu lucid(10.04)上安装`libpq-dev`后解决了.先感谢您. (54认同)
  • `sudo apt-get install libpq-dev`在Ubuntu上为我工作 (39认同)
  • 在Alpine Linux上:apk添加postgresql-dev (39认同)
  • postgress.app的`pg_config`位于`/Applications/Postgres.app/Contents/Versions/<your version>/bin`(Mac OS X) (19认同)
  • 它是fedora上的`libpqxx-devel`. (14认同)
  • #pg_config当前未安装程序'pg_config'.您可以通过输入以下命令安装它:apt-get install libpq-dev (4认同)
  • 在Mac OS X上:'brew install postgresql' (4认同)
  • AWS Elastic Beanstalk 与 Amazon Linux 2:“yum -y install postgresql-devel” (4认同)
  • openSUSE 也一样:`postgresql-devel 中的 zypper` (3认同)
  • 对于 fedora 35 和 36,“sudo dnf install libpq-devel”安装了一些软件包,但不起作用。之后运行“sudo dnf install libpq5-devel”即可。 (3认同)
  • 对于 Windows,它位于 `ProgramFiles\PostgreSQL\version\bin\` (2认同)
  • 使用“brew install postgresql”在 OSX Mojave 上为我解决了问题 (2认同)
  • ArchLinux:额外/postgresql-libs (2认同)
  • 在 CentOS 上,`pg_config` 可以位于 `postgresql`/`postgresql&lt;version&gt;` 包中。为了让 `pip` 能够看到它,在某些情况下(`/usr/pgsql-&lt;version&gt;/bin/pg_config`)它必须添加到 `PATH` 中。尽管在最近的版本(`pg &gt;= 12`)中,pgdg 似乎也开始在 `libpq5-devel` 中传送 `pg_config`,在这种情况下它位于 `/usr/bin/pg_config`。 (2认同)
  • 在 Ubuntu 20.04.1 LTS 上使用 `sudo apt install libpq-dev` 解决 (2认同)

aza*_*lea 314

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

brew install postgresql
Run Code Online (Sandbox Code Playgroud)

  • 优秀!这解决了我的问题,但新手应该知道你需要首先安装[Homebrew](http://brew.sh/)包管理器才能使`brew`命令工作. (26认同)
  • 那不是安装整个数据库吗? (4认同)
  • 我需要额外的`brew link postgresql` (3认同)
  • 要添加到 @seane 的评论,请使用 **[此演练](https://coolestguidesontheplanet.com/installing-homebrew-on-os-x-el-capitan-10-11-package-manager-for-unix-apps /)** 安装 `homebrew`。 (2认同)
  • 对于 Apple 芯片(例如 M1、M2),请使用:“arch -arm64 brew install postgresql”,请参阅:/sf/answers/5206209361/ (2认同)

the*_*raw 195

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

sudo apt-get install libpq-dev python-dev
Run Code Online (Sandbox Code Playgroud)

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

  • **需要 python3-dev。** 如果没有它,我会得到“Python.h:没有这样的文件或目录” (10认同)
  • 所需的另一个依赖项是“apt-get install -y gcc” (3认同)
  • 我安装了“python3-dev”,但在安装“libpq-dev”之前遇到了同样的错误,谢谢! (3认同)
  • 怀疑是否需要python-dev。 (2认同)
  • 升级到 python 3.9 后我必须执行: **sudo apt install python3.9-dev** (2认同)

小智 89

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

sudo apt install libpq-dev
Run Code Online (Sandbox Code Playgroud)

这对我有用。

  • 在 Arch/Manjaro 上它是 `postgresql-libs` (3认同)
  • 它对我也有用。这里有什么问题吗?libpq-dev 是用来做什么的? (2认同)

Tay*_*ler 64

也在OSX上.安装了来自http://postgresapp.com/的 Postgress.app,但遇到了同样的问题.

pg_config在该应用程序的内容中找到并添加了dir $PATH.

它在/Applications/Postgres.app/Contents/Versions/latest/bin.所以这很有效:export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH".

  • 它工作正常,但需要重新启动consolle;) (2认同)
  • @GianlucaLodigiani如果您不想重新启动控制台`PATH =“ / Applications / Postgres.app / Contents / Versions / latest / bin:$ PATH” pip install psycopg2,也可以执行此操作。 (2认同)

Jak*_*kub 64

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

python -m pip install psycopg2-binary
Run Code Online (Sandbox Code Playgroud)

或者

conda install psycopg2
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • 交流编译器
  • 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版本(通常为/usr/lib/postgresql/X.Y/bin/)的目录并将其添加到PATH
$ export PATH=/usr/lib/postgresql/X.Y/bin/:$PATH
Run Code Online (Sandbox Code Playgroud)

您只需要pg_configcompile psycopg2,而不是常规使用。

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

$ pip install psycopg2
Run Code Online (Sandbox Code Playgroud)

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

$ python setup.py build
$ python setup.py install
Run Code Online (Sandbox Code Playgroud)


rko*_*val 40

在高山上,包含的图书馆pg_configpostgresql-dev.要安装,请运行:

apk add postgresql-dev
Run Code Online (Sandbox Code Playgroud)


Ris*_*wal 39

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

brew install postgresql
Run Code Online (Sandbox Code Playgroud)

这应该可以解决问题。


mat*_*tiu 36

apt-get build-dep python-psycopg2
Run Code Online (Sandbox Code Playgroud)


Ali*_*ani 30

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

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

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

/opt/local/lib/postgresql91/
Run Code Online (Sandbox Code Playgroud)

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

PATH=$PATH:/opt/local/lib/postgresql91/bin/
Run Code Online (Sandbox Code Playgroud)

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

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

  • 对于我在OS X上的路径看起来像这样`PATH ="/ Applications/Postgres.app/Contents/Versions/9.3/bin:$ PATH"` (6认同)
  • 我在这里找到了mac的解决方案:http://stackoverflow.com/a/22396735/892500 (4认同)

nov*_*int 30

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


小智 30

这对我有用:

sudo apt-get install libpq-dev python-dev
Run Code Online (Sandbox Code Playgroud)


rad*_*tek 29

这对CentOS有用,首先安装:

sudo yum install postgresql postgresql-devel python-devel
Run Code Online (Sandbox Code Playgroud)

在Ubuntu上只使用equivilent apt-get包.

sudo apt-get install postgresql postgresql-dev python-dev
Run Code Online (Sandbox Code Playgroud)

现在在你的pip install中包含postgresql二进制文件的路径,这应该适用于基于Debain或RHEL的Linux:

sudo PATH=$PATH:/usr/pgsql-9.3/bin/ pip install psycopg2
Run Code Online (Sandbox Code Playgroud)

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

  • 在 Ubuntu 上,它是 `sudo apt-get install postgresql postgresql-dev python-dev`,这对我有用。 (2认同)
  • 截至 2016 年 12 月,也适用于 Amazon Linux AMI。还要确保安装了 `gcc` 和 python3-devel。 (2认同)

小智 24

您必须安装libpq-dev/postgresql-libs,它是用于编译 C 程序以与 libpq 库链接以便与 PostgreSQL 数据库后端通信的头文件和静态库。

在 Arch 上,这将运行:

$ sudo pacman -S postgresql-libs
Run Code Online (Sandbox Code Playgroud)

在 Debian 和 Ubuntu 上:

$ sudo apt-get install libpq-dev
Run Code Online (Sandbox Code Playgroud)

在 Mac OS X 上:

$ brew install postgresql
Run Code Online (Sandbox Code Playgroud)

在 Red Hat/CentOS/Fedora 上:

$ sudo yum install postgresql-devel
Run Code Online (Sandbox Code Playgroud)

  • 因有助于解释问题的确切原因而投票。 (2认同)

mth*_*tor 23

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


小智 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
Run Code Online (Sandbox Code Playgroud)


Mil*_*ilo 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

例如

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


小智 17

只需运行以下命令:

sudo apt install libpq-dev
Run Code Online (Sandbox Code Playgroud)

为我解决了这个问题


Mar*_*oni 16

尝试将其添加到PATH:

PATH=$PATH:/usr/pgsql-9.1/bin/ ./pip install psycopg2
Run Code Online (Sandbox Code Playgroud)


小智 16

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

My-MacBook-Pro:~ Me$ /Applications/Postgres93.app/Contents/MacOS/bin/psql ; exit;
Run Code Online (Sandbox Code Playgroud)

您的pg_config文件位于该bin文件夹中.因此,在安装psycopg2之前设置pg_config文件的路径:

PATH=$PATH:/Applications/Postgres93.app/Contents/MacOS/bin/
Run Code Online (Sandbox Code Playgroud)

或者对于较新版本:

PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin
Run Code Online (Sandbox Code Playgroud)

然后安装psycopg2.

  • 较新的文档使用以下路径:`/Applications/Postgres.app/Contents/Versions/9.3/bin` (2认同)

Asw*_*win 10

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

pip install --upgrade pip
Run Code Online (Sandbox Code Playgroud)

  • 在大多数情况下,更详细的答案可能会有所帮助。 (2认同)

Mor*_*oti 9

刚解决了Cent OS 7中的问题:

export PATH=$PATH:/usr/pgsql-9.5/bin
Run Code Online (Sandbox Code Playgroud)

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


aza*_*lea 8

在Windows上,您可能需要安装PsycopgWindows端口,这是psycopg文档中推荐.


mir*_*ana 8

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


Din*_*nny 7

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

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin
Run Code Online (Sandbox Code Playgroud)

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

并做

pip install psycopg2
Run Code Online (Sandbox Code Playgroud)

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

资源


Dan*_*ler 7

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

\n

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

\n
set PATH=%PATH%;C:\\Program Files\\PostgreSQL\\11\\bin\n
Run Code Online (Sandbox Code Playgroud)\n

代替\\11\\为您的 Postgres 版本

\n

下一次运行

\n
pip install pyscopg2\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

更新:这看起来是 psycopg2 库的问题,它\xe2\x80\x99s 依赖项与 python 3.8 不能很好地配合。https://github.com/psycopg/psycopg2/issues/990

\n


Uma*_*har 7

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

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

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


小智 7

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

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

那为我解决了这个问题。


Sub*_*ian 6

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

sudo ln -s /Applications/Postgres.app/Contents/Versions/latest/bin/pg_config /usr/local/bin/pg_config
Run Code Online (Sandbox Code Playgroud)

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


Esm*_*AEE 6

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


小智 5

sudo yum install postgresql-devel(centos6X)

pip install psycopg2 == 2.5.2


Gab*_*abi 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毫无问题地运行.


Ron*_*eau 5

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

pacman -S python-psycopg2
Run Code Online (Sandbox Code Playgroud)

  • 我不知道,我不使用Windows。您是否尝试过以下答案:/sf/answers/1803742461/? (2认同)

qar*_*dso 5

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

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

export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)

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

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


小智 5

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

pip install psycopg2==2.7.5
Run Code Online (Sandbox Code Playgroud)


小智 5

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


Dhi*_*pta 5

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

按照 Pipenv 安装的错误输出中的建议进行安装psycopg2_binary,一切都会正常进行。


小智 5

运行以下命令来解决找不到pg_config 可执行文件的问题:-

sudo apt-get install --reinstall libpq-dev
Run Code Online (Sandbox Code Playgroud)