错误:安装 psycopg2 时命令“gcc”以退出状态失败
Posted
技术标签:
【中文标题】错误:安装 psycopg2 时命令“gcc”以退出状态失败【英文标题】:Error: command 'gcc' failed with exit status when installing psycopg2 【发布时间】:2012-10-06 09:02:45 【问题描述】:我需要为openerp
安装过程安装psycopg2
,但我总是遇到这个错误。我已经用过pip
和easy_install
,我的gcc
是最新版本。我真的需要你的帮助来解决我的问题。
这是我使用easy_install的完整错误:
[root@server01 ~]# easy_install psycopg2
Searching for psycopg2
Reading http://pypi.python.org/simple/psycopg2/
Reading http://initd.org/psycopg/
Reading http://initd.org/projects/psycopg2
Best match: psycopg2 2.4.5
Downloading http://initd.org/psycopg/tarballs/PSYCOPG-2-4/psycopg2-2.4.5.tar.gz
Processing psycopg2-2.4.5.tar.gz
Running psycopg2-2.4.5/setup.py -q bdist_egg --dist-dir /tmp/easy_install-anWVvJ/psycopg2-2.4.5/egg-dist-tmp-cZbdtn
no previously-included directories found matching 'doc/src/_build' In file included from psycopg/psycopgmodule.c:27:
./psycopg/psycopg.h:31:22: error: libpq-fe.h: No such file or directory In file included from psycopg/psycopgmodule.c:29:
...
error: Setup script exited with error: command 'gcc' failed with exit status 1
【问题讨论】:
【参考方案1】:gcc 调用失败,gcc 无法编译源代码。可能原因是
./psycopg/psycopg.h:31:22: error: libpq-fe.h: No such file or directory In file included from psycopg/psycopgmodule.c:29:
标题libpq-fe.h
根本不在搜索路径中。
【讨论】:
我应该用 libpq-fe.h 做什么?你能给我更多的解释吗? 检查你是否拥有它。如果没有,请安装提供它的软件包,libpq-devel
或 libpq-dev
或类似的东西,具体取决于发行版。【参考方案2】:
您需要安装 PostgreSQL 的开发包,例如在 Ubuntu 下是 sudo apt-get install libpq-dev
... 而在 CentOS 下是 yum install postgresql-devel
【讨论】:
【参考方案3】:可能您的系统缺少 Python 标头。要解决此问题,请运行:
sudo apt-get install python-dev
或
sudo apt-get install python3-dev
【讨论】:
我搜索了 30 分钟。安装了 python-psycopg2、postgresql-server-dev-9.1、postgresql-plpython-9.1 和 libpq-dev。仍然得到 '"gcc" failed with exit status 1. 现在使用 python-dev 可以正常工作;-) 除非你使用的是 CentOS opensuse 用户应该使用:sudo zypper install python3-dev【参考方案4】:对于 CentOS,我遇到了同样的问题,我解决了安装这些软件包的问题:
sudo yum install postgresql-libs
sudo yum install postgresql-devel
sudo yum install python-devel
只有这样,我才能成功地表演:
sudo easy_install psycopg2
【讨论】:
感谢您没有假设每个人都使用 Debian。 +1 "sudo yum install python-devel" 应改为"sudo yum install python3-devel" for python3.x【参考方案5】:对我来说,丢失的包裹是
libpqxx-devel.x86_64
【讨论】:
【参考方案6】:这在 Ubuntu Server 14.10 64 位上对我有用:
sudo apt-get install libpqxx-dev
【讨论】:
【参考方案7】:对于 Ubuntu 14.04
,来自 Docker 映像 python:3.4.3-slim
,这个组合对我有用:
sudo apt-get update
sudo apt-get install -y build-essential
sudo apt-get install -y python3.4-dev
sudo apt-get install -y libpq-dev
pip3 install psycopg2
注意build-essential
包。这对我来说至关重要。
【讨论】:
伙计,在这最终修复之前,我尝试了所有方法。还运行一个 docker 映像,所以几乎只是将您的代码复制到我的 dockerfile 中,它就像一个魅力【参考方案8】:在 EC2 实例上的全新 ubuntu 14.04.2 LTS 上,我能够在安装以下软件包后安装 psycopg2:
sudo apt-get install gcc
sudo apt-get install postgres-xc-server-dev
sudo apt-get install libpq-dev
sudo apt-get install postgresql-client-common
sudo apt-get install postgresql-common
在全新的 AMI linux (CentOS) 实例上:
sudo yum install postgresql-devel
sudo yum install gcc*
希望对你有帮助,
埃雷兹
【讨论】:
【参考方案9】:我一直在尝试在普通的 Amazon Linux EC2 实例上安装 pgsql,并且一直收到此错误。根据 Nicolás 的回答,我安装了他建议的软件包列表,但我继续收到错误消息。仔细查看错误,我注意到 gcc
命令包含 pgsql93 文件:
gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.6.1 (dt dec pq3 ext lo64)" -DPG_VERSION_HEX=0x09030A -DHAVE_LO64=1 -I/usr/include/python2.7 -I. -I/usr/include/pgsql93 -I/usr/include/pgsql93/server -c psycopg/psycopgmodule.c -o build/temp.linux-x86_64-2.7/psycopg/psycopgmodule.o -Wdeclaration-after-statement
查看/usr/include/
,我看到pgsql92/
,但没有看到pgsql93/
。所以我看了一下安装了哪些 pgsql 相关的 yum 包,我注意到了这些:
postgresql92.x86_64
postgresql92-devel.x86_64
postgresql92-libs.x86_64
postgresql93.x86_64
postgresql93-libs.x86_64
在我看来应该有一个postgresql93-devel
,所以我尝试了:
sudo yum install postgresql93-devel
这为我解决了问题!所以我猜主题是:查看 gcc 调用,看看它拉入了什么目录。从那里跟随面包屑。
【讨论】:
【参考方案10】:在 centos 7 中,我会使用 sudo yum install postgresql96-devel.x86_64
来解决我的问题。
【讨论】:
【参考方案11】:我遇到了这个问题,但通过运行解决了:
pip install -Iv psycopg2==2.7.7
安装最新版本+python3.7出现问题
【讨论】:
【参考方案12】:psycopg2 也可以在 PyPI 上以 Wheel 包的形式用于最常见的平台(Linux、OSX、Windows):这应该使您能够安装模块的二进制版本,而不需要上述构建或运行时先决条件.
你可以使用这个命令:pip install psycopg2-binary
注意 psycopg2-binary 包旨在让初学者无需满足构建要求即可开始使用 Python 和 PostgreSQL。 如果您是依赖 psycopg2 的发布包的维护者,则不应使用“psycopg2-binary”作为模块依赖项。对于生产用途,建议您使用源代码分发。
【讨论】:
那么...为什么在运行该命令时会出现“无法执行'gcc':没有这样的文件或目录”?如果我尝试安装模块的二进制版本,为什么需要 gcc?【参考方案13】:我正在为 CICD 运行 3.9-alpine,必须安装这些软件包才能使其正常工作;
apk add postgresql-dev
apk add gcc
apk add musl-dev
然后我可以正常运行pip install psycopg2
。
【讨论】:
以上是关于错误:安装 psycopg2 时命令“gcc”以退出状态失败的主要内容,如果未能解决你的问题,请参考以下文章
当我尝试使用 pip install psycopg2 安装 psycopg2 时,出现此错误。我该怎么办? [复制]
在 MacOS 上安装 psycopg2 失败,错误消息不明确
ModuleNotFoundError:运行时没有名为“psycopg2”的模块