安装psycopg2时出现错误:命令“gcc”的退出状态失败

35

我需要在安装openerp的过程中安装psycopg2,但我总是遇到错误。我已经使用了pipeasy_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
13个回答

49
您需要安装PostgreSQL的开发包,例如在Ubuntu下可以使用sudo apt-get install libpq-dev命令进行安装... 而在CentOS下则需要使用yum install postgresql-devel命令进行安装。

34

对于CentOS的情况,我曾经遇到同样的问题,通过安装这些软件包来解决:

sudo yum install postgresql-libs
sudo yum install postgresql-devel
sudo yum install python-devel

只有这样,我才能成功表现:

sudo easy_install psycopg2

9
谢谢您不认为每个人都使用Debian操作系统。加一分。 - hafichuk
2
"sudo yum install python-devel" 应改为 "sudo yum install python3-devel" 适用于 Python 3.x。 - bazinga

14

在一个新的Ubuntu 14.04.2 LTS EC2实例上,我成功安装了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*
希望它有所帮助, Erez

14

可能您的系统缺少Python头文件。为了解决这个问题,请运行:

sudo apt-get install python-dev
或者
sudo apt-get install python3-dev

1
我搜索了30分钟。安装了python-psycopg2、postgresql-server-dev-9.1、postgresql-plpython-9.1和libpq-dev。但仍然出现“'gcc' failed with exit status 1”的错误。现在使用python-dev就可以正常工作了;-) - surfi
2
除非您使用CentOS,否则请返回已翻译的文本。 - hafichuk
openSUSE用户应该使用:sudo zypper install python3-dev。 - Masih

10

我曾经遇到过这个问题,但通过运行以下命令解决了:

pip install -Iv psycopg2==2.7.7

安装最新版本的Python 3.7时出现了问题。


6
我一直在尝试在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调用,并查看它正在使用哪个目录。从那里开始追踪。


5

对于 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 包。在我的情况下这个包是至关重要的。


1
兄弟,我之前尝试了所有的方法才最终解决了这个问题。我还在运行一个 Docker 镜像,所以基本上只是将你的代码复制到我的 Dockerfile 中,然后它就像魔法般地工作了。 - Simon

3
在CentOS 7中,我使用sudo yum install postgresql96-devel.x86_64解决了我的问题。

2

调用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文件?你能给我更多的解释吗? - ws_123
检查您是否拥有它。如果没有,请安装提供它的软件包,根据发行版选择 libpq-devellibpq-dev 或类似的软件包。 - Daniel Fischer

2

这对我在Ubuntu Server 14.10 64位上有效:

sudo apt-get install libpqxx-dev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接