如何安装 libpq-fe.h?

Posted

技术标签:

【中文标题】如何安装 libpq-fe.h?【英文标题】:How to install libpq-fe.h? 【发布时间】:2020-03-16 13:35:27 【问题描述】:

我这辈子都想不通。

当我pip install django-tenant-schemas 时,它会尝试安装依赖项psycopg2,这需要 Python 头文件和 gcc。我已经安装了所有这些,但仍然不断收到此错误!

./psycopg/psycopg.h:35:10: fatal error: libpq-fe.h: No such file or directory

所以要安装libpq-fe-h 我需要sudo apt-get install libpq-dev..

..返回..

libpq-dev is already the newest version (10.10-0ubuntu0.18.04.1).

然后当我sudo find / libpq-fe.h 它似乎不在我的操作系统中。

此时我迷路了。如果有人可以提供帮助,我将不胜感激。

【问题讨论】:

尝试重新安装:sudo apt-get install --reinstall libpq-dev 天哪!我已经尝试了一切,但没有任何效果!我重新安装了所有东西,但这个!太令人沮丧了!谢谢! 我在 Ubuntu 20.04 上遇到了同样的问题,这个简单的命令拯救了我的一天。 【参考方案1】:

安装这些库之后 sudo dnf install python-virtualenv openssl-devel gcc libffi-devel libxslt-devel 问题没有消失。

我使用mlocate 查找libpq-fe.h 文件所在的位置。在我的系统(Fedora 32)上,它位于/usr/pgsql-10/include/libpq-fe.h

yum install mlocate
sudo updateb
locate libpq-fe.h

毕竟将这一行添加到~/.bash_profile

nano ~/.bash_profile
export PATH=/usr/pgsql-10/bin/:$PATH

工作正常,我可以轻松安装psycopg2 没有任何麻烦。

【讨论】:

【参考方案2】:

您需要创建一个 LD_LIBRARY_PATH,其中指示您的库的路径 "/user/pgsql-11/lib"

构建前提的第三点 http://initd.org/psycopg/docs/install.html

【讨论】:

只有当它返回一个意外的版本号 - 这不是我的情况。【参考方案3】:

由于某种原因,系统上缺少该文件。

当您使用apt-get 时,系统是基于dpkg 的,可能是Debian 或其衍生产品。您可以尝试使用Ubuntu's package search 来获取哪个包包含名称​​以 libpq-fe.h 结尾的文件。

I found the package is libpq-dev and file's absolute path is /usr/include/postgresql/libpq-fe.h.


FWIW,在基于 dpkg 的系统上,如果您知道文件的绝对路径,则可以检查哪个包提供了文件:

% dpkg -S /usr/include/postgresql/libpq-fe.h
libpq-dev: /usr/include/postgresql/libpq-fe.h

此外,与find 不同,locate 保留每天通过cron 创建的已找到文件 (mlocate.db) 的缓存;所以如果文件在上次运行后恰好被删除,你可以运行locate libfq-fe.h来获取文件的绝对路径,而无需在线检查Ubuntu包搜索。


所以包是libpq-dev。现在,重新安装它将使所有内容恢复到默认状态,即所有相关文件都将被复制到正确的位置。由于它只是一个库包,因此不会覆盖任何用户/系统级别的配置(dpkg 会提示您对任何这样做的包采取行动)。

要重新安装软件包:

sudo apt-get install --reinstall libpq-dev

【讨论】:

是的。重新安装sudo apt-get install --reinstall libpq-dev 也为我解决了同样的问题!谢谢!

以上是关于如何安装 libpq-fe.h?的主要内容,如果未能解决你的问题,请参考以下文章

rails install pg - 找不到'libpq-fe.h头文件

ubuntu 上 libpq 标头的“标准”位置?

如何在代码块下使用 pqxx 解决这个编译错误

postgresql c library use

MFC连接postgre数据库

虚拟机如何安装debian系统