[英]Error: command 'gcc' failed with exit status when installing psycopg2
I need to install psycopg2
for openerp
installation process, but I always faced that error.我需要为
openerp
安装过程安装psycopg2
,但我总是遇到那个错误。 I've already used pip
and easy_install
and my gcc
is the latest version.我已经使用了
pip
和easy_install
,我的gcc
是最新版本。 I really need your help to solve my problem.我真的需要你的帮助来解决我的问题。
This is my complete error with easy_install:这是我使用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
您需要为 PostgreSQL 安装开发包,例如在 Ubuntu 下是sudo apt-get install libpq-dev
... 而对于 CentOS 是yum install postgresql-devel
For the case of CentOS, I had this very same problem, that I solved installing these packages:对于 CentOS,我遇到了同样的问题,我解决了安装这些软件包的问题:
sudo yum install postgresql-libs
sudo yum install postgresql-devel
sudo yum install python-devel
only then, I was able to perform successfully:只有这样,我才能成功执行:
sudo easy_install psycopg2
May Your system is missing the Python headers.可能您的系统缺少 Python 标头。 To fix this, run:
要解决此问题,请运行:
sudo apt-get install python-dev
or或者
sudo apt-get install python3-dev
On a fresh ubuntu 14.04.2 LTS on an EC2 instance, I was able to install psycopg2 after instaling the following packages:在 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
And on a fresh AMI linux (CentOS) instance:在一个新的 AMI linux (CentOS) 实例上:
sudo yum install postgresql-devel
sudo yum install gcc*
Hope it helps,希望能帮助到你,
Erez埃雷兹
i had this problem but was solved by running:我有这个问题,但通过运行解决了:
pip install -Iv psycopg2==2.7.7
There is a problem installing the latest version + python3.7安装最新版本+python3.7有问题
I've been trying to install pgsql on a plain Amazon Linux EC2 instance, and have been getting this error.我一直在尝试在普通的 Amazon Linux EC2 实例上安装 pgsql,但一直出现此错误。 Per Nicolás answer, I installed his suggested list of packages, but I continued to get the error.
根据 Nicolás 的回答,我安装了他建议的软件包列表,但仍然出现错误。 Looking more closely at the error, I noticed that the
gcc
command was including pgsql93 files:更仔细地查看错误,我注意到
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
Looking in /usr/include/
I see pgsql92/
but not pgsql93/
.查看
/usr/include/
我看到pgsql92/
但没有看到pgsql93/
。 So I took a look at what pgsql-related yum packages were installed and I noticed these:所以我查看了安装了哪些与 pgsql 相关的 yum 包,我注意到了这些:
postgresql92.x86_64 postgresql92-devel.x86_64 postgresql92-libs.x86_64 postgresql93.x86_64 postgresql93-libs.x86_64
Seemed to me like there ought to be a postgresql93-devel
, so I tried:在我看来应该有一个
postgresql93-devel
,所以我试过:
sudo yum install postgresql93-devel
And that fixed the problem for me!这为我解决了问题! So I guess the theme is: Look at the gcc call, and see what dir it's pulling in .
所以我想主题是:查看 gcc 调用,看看它拉入了什么目录。 Follow the crumbs from there.
从那里跟随面包屑。
For Ubuntu 14.04
, from Docker image python:3.4.3-slim
this combination worked for me:对于
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
Note build-essential
package.注意
build-essential
包。 It was crucial in my case.这对我来说至关重要。
在centos 7. 我会使用sudo yum install postgresql96-devel.x86_64
来解决我的问题。
The invocation of gcc failed, gcc couldn't compile the source. gcc 调用失败,gcc 无法编译源代码。 Probably the cause is
原因大概是
./psycopg/psycopg.h:31:22: error: libpq-fe.h: No such file or directory In file included from psycopg/psycopgmodule.c:29:
that the header libpq-fe.h
is nowhere in the search path if you have it at all.如果你有头文件
libpq-fe.h
在搜索路径中是无处可去的。
这在 Ubuntu Server 14.10 64 位上对我有用:
sudo apt-get install libpqxx-dev
对我来说,丢失的包裹是
libpqxx-devel.x86_64
psycopg2 is also available on PyPI in the form of wheel packages for the most common platform (Linux, OSX, Windows): this should make you able to install a binary version of the module, not requiring the above build or runtime prerequisites. psycopg2 也可以在 PyPI 上以轮包的形式用于最常见的平台(Linux、OSX、Windows):这应该使您能够安装该模块的二进制版本,而不需要上述构建或运行时先决条件。
You can use this command : pip install psycopg2-binary您可以使用此命令:pip install psycopg2-binary
Note The psycopg2-binary package is meant for beginners to start playing with Python and PostgreSQL without the need to meet the build requirements.注意 psycopg2-binary 包适用于初学者开始使用 Python 和 PostgreSQL 而无需满足构建要求。 If you are the maintainer of a publish package depending on psycopg2 you shouldn't use 'psycopg2-binary' as a module dependency.
如果您是依赖于 psycopg2 的发布包的维护者,则不应使用“psycopg2-binary”作为模块依赖项。 For production use you are advised to use the source distribution.
对于生产用途,建议您使用源代码分发。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.