在Amazon Linux上安装psycopg2时出现错误

3

在使用以下命令在Amazon Linux上安装psycopg2时:sudo pip-3.4 install psycopg2,我得到了以下输出:

gcc -pthread -Wno-unused-result -DDYNAMIC_ANNOTATIONS_ENABLED=1 -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.7 (dt dec pq3 ext)" -DPG_VERSION_NUM=90218 -I/usr/include/python3.4m -I. -I/usr/include/pgsql92 -I/usr/include/pgsql92/server -c psycopg/psycopgmodule.c -o build/temp.linux-x86_64-3.4/psycopg/psycopgmodule.o -Wdeclaration-after-statement
    In file included from ./psycopg/replication_cursor.h:30:0,
                     from psycopg/psycopgmodule.c:32:
    ./psycopg/libpq_support.h:31:32: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘XLogRecPtr’
     typedef unsigned PG_INT64_TYPE XLogRecPtr;
                                    ^
    In file included from psycopg/psycopgmodule.c:32:0:
    ./psycopg/replication_cursor.h:47:5: error: unknown type name ‘XLogRecPtr’
         XLogRecPtr  write_lsn;        /* LSNs for replication feedback messages */
         ^
    ./psycopg/replication_cursor.h:48:5: error: unknown type name ‘XLogRecPtr’
         XLogRecPtr  flush_lsn;
         ^
    ./psycopg/replication_cursor.h:49:5: error: unknown type name ‘XLogRecPtr’
         XLogRecPtr  apply_lsn;
         ^
    In file included from psycopg/psycopgmodule.c:33:0:
    ./psycopg/replication_message.h:46:5: error: unknown type name ‘XLogRecPtr’
         XLogRecPtr  data_start;
         ^
    ./psycopg/replication_message.h:47:5: error: unknown type name ‘XLogRecPtr’
         XLogRecPtr  wal_end;
         ^
    error: command 'gcc' failed with exit status 1

我已经安装了gcc、postgresql-devel、postgresql-libs和python34-devel。我是否缺少某个包或设置?
编辑:这是在EMR节点上。
3个回答

3

我和EMR有同样的问题,我尝试了以下方法:

sudo yum -y install gcc python-setuptools python-devel postgresql-devel
sudo /usr/bin/pip install --upgrade pip 
sudo /usr/local/bin/pip install psycopg2

当我在EMR上运行它时,它可以工作,但是当EMR从Pipeline启动时无法工作。


谢谢!升级pip解决了问题。不幸的是,它会导致其他一些pip版本控制问题,但那暂时应该可以解决。我还在处理EMR,所以可能与这个问题有关。 - jarbaugh
我只用 yum install gcc postgresql-devel 就成功安装了 psycopg2。 - causaSui

1
如果您想为Python3安装psycopg2,则还必须安装python3-devel。要查找正确的软件包,请运行以下命令:yum search python3 | grep devel。在我的情况下,它是python36-devel,因此我运行了sudo yum install python36-devel。然后我就可以在机器上为我的Python3虚拟环境安装psycopg2了。

0
如果你正在寻找适用于Amazon Linux的Python3的psycopg2,这是我使用的方法:
sudo yum install -y gcc postgresql-devel
sudo curl https://bootstrap.pypa.io/ez_setup.py -o - | sudo python36
sudo pip-3.6 install -U psycopg2

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