在 Centos 7.3 上安装 python3 的 psycopg2 包时出现 gcc 错误

在 Centos 7.3 上安装 python3 的 psycopg2 包时出现 gcc 错误

根据这个答案,我执行了一系列先决条件设置,以准备pip安装python3软件包。

然而,当我跑步时

python3 -m pip install psycopg2

我收到以下错误:

Downloading/unpacking psycopg2
  Downloading psycopg2-2.6.2.tar.gz (376kB): 376kB downloaded
  Running setup.py (path:/tmp/pip-build-1ocbvumt/psycopg2/setup.py) egg_info for package psycopg2

Installing collected packages: psycopg2
  Running setup.py install for psycopg2
    Skipping implicit fixer: buffer
    Skipping implicit fixer: idioms
    Skipping implicit fixer: set_literal
    Skipping implicit fixer: ws_comma
    building 'psycopg2._psycopg' extension
    gcc -pthread -Wno-unused-result -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -I/opt/rh/rh-python34/root/usr/include -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.6.2 (dt dec pq3 ext)" -DPG_VERSION_HEX=0x090212 -I/opt/rh/rh-python34/root/usr/include/python3.4m -I. -I/usr/include -I/usr/include/pgsql/server -c psycopg/psycopgmodule.c -o build/temp.linux-x86_64-3.4/psycopg/psycopgmodule.o -Wdeclaration-after-statement
    In file included from psycopg/psycopgmodule.c:27:0:
    ./psycopg/psycopg.h:31:22: fatal error: libpq-fe.h: No such file or directory
     #include <libpq-fe.h>
                          ^
    compilation terminated.
    error: command 'gcc' failed with exit status 1
    Complete output from command /opt/rh/rh-python34/root/usr/bin/python3 -c "import setuptools, tokenize;__file__='/tmp/pip-build-1ocbvumt/psycopg2/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-rfdowyqt-record/install-record.txt --single-version-externally-managed --compile:
    running install

running build

running build_py

creating build

creating build/lib.linux-x86_64-3.4

creating build/lib.linux-x86_64-3.4/psycopg2

copying lib/tz.py -> build/lib.linux-x86_64-3.4/psycopg2

copying lib/pool.py -> build/lib.linux-x86_64-3.4/psycopg2

copying lib/extras.py -> build/lib.linux-x86_64-3.4/psycopg2

copying lib/extensions.py -> build/lib.linux-x86_64-3.4/psycopg2

copying lib/_range.py -> build/lib.linux-x86_64-3.4/psycopg2

copying lib/__init__.py -> build/lib.linux-x86_64-3.4/psycopg2

copying lib/psycopg1.py -> build/lib.linux-x86_64-3.4/psycopg2

copying lib/_json.py -> build/lib.linux-x86_64-3.4/psycopg2

copying lib/errorcodes.py -> build/lib.linux-x86_64-3.4/psycopg2

creating build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_errcodes.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/dbapi20.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_bug_gc.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_async.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/testconfig.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_quote.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_extras_dictcursor.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_types_basic.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_transaction.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_cancel.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_dates.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_lobject.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/dbapi20_tpc.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_copy.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_types_extras.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_psycopg2_dbapi20.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_module.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/__init__.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_green.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/testutils.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_with.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_cursor.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_connection.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_notify.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_bugX000.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

Skipping implicit fixer: buffer

Skipping implicit fixer: idioms

Skipping implicit fixer: set_literal

Skipping implicit fixer: ws_comma

running build_ext

building 'psycopg2._psycopg' extension

creating build/temp.linux-x86_64-3.4

creating build/temp.linux-x86_64-3.4/psycopg

gcc -pthread -Wno-unused-result -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -I/opt/rh/rh-python34/root/usr/include -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.6.2 (dt dec pq3 ext)" -DPG_VERSION_HEX=0x090212 -I/opt/rh/rh-python34/root/usr/include/python3.4m -I. -I/usr/include -I/usr/include/pgsql/server -c psycopg/psycopgmodule.c -o build/temp.linux-x86_64-3.4/psycopg/psycopgmodule.o -Wdeclaration-after-statement

In file included from psycopg/psycopgmodule.c:27:0:

./psycopg/psycopg.h:31:22: fatal error: libpq-fe.h: No such file or directory

 #include <libpq-fe.h>

                      ^

compilation terminated.

error: command 'gcc' failed with exit status 1

----------------------------------------
Cleaning up...
Command /opt/rh/rh-python34/root/usr/bin/python3 -c "import setuptools, tokenize;__file__='/tmp/pip-build-1ocbvumt/psycopg2/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-rfdowyqt-record/install-record.txt --single-version-externally-managed --compile failed with error code 1 in /tmp/pip-build-1ocbvumt/psycopg2
Storing debug log for failure in /root/.pip/pip.log

我认为总结是:error: command 'gcc' failed with exit status 1

我的系统上还可能缺少什么才能安装psycopg2

答案1

对于 Ubuntu 使用

sudo apt install libpq-dev

答案2

我丢失了libpq-fe.h,这是我通过安装获得的postgresql-devel

sudo yum install postgresql-devel

答案3

运行下面的命令它会让你使用psycopg2

pip install psycopg2-binary

答案4

对于 Linux Ubuntu(或其他 Debian)

sudo apt-get install python3-dev

或者对于 CENTOS (RHEL)(或者在我的例子中是 Amazon Linux 2)

sudo yum 安装 python3-dev

另外,我到处都找到了类似的答案,区别在于而不是 python-dev 并安装 python3-dev 会导致解决我的问题。

其他依赖项也很重要,例如,

sudo yum 安装 postgresql-devel

相关内容