Psycopg2 не может быть установлен на python 3 с протоколом, выдающим фатальную ошибку

$ yum install python3 postgresql python-devel libpqxx-devel
Loaded plugins: langpacks, refresh-packagekit
Package python3-3.3.2-8.fc20.x86_64 already installed and latest version
Package postgresql-9.3.2-2.fc20.x86_64 already installed and latest version
Package python-devel-2.7.5-9.fc20.x86_64 already installed and latest version
Package 1:libpqxx-devel-3.2-0.5.fc20.x86_64 already installed and latest version
Nothing to do

Я пытаюсь установить psycopg2 в свой virtualenv для подключения django к базе данных postgresql.

В Fedora 19 и postgresql-9.2 путь к pg_config был:

/usr/pgsql-9.2/bin

В Fedora 20 этот каталог не существует.

Однако pg_config можно найти в /usr/bin/pg_config.

Попытка установить psycopg2:

 $ export PATH=$PATH:/usr/bin; pip install psycopg2
Downloading/unpacking psycopg2
  Downloading psycopg2-2.5.2.tar.gz (685kB): 685kB downloaded
  Running setup.py egg_info for package psycopg2

... -compiling output here- ...

gcc -pthread -Wno-unused-result -DDYNAMIC_ANNOTATIONS_ENABLED=1 -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 -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.5.2 (dt dec pq3 ext)" -DPG_VERSION_HEX=0x090302 -DPSYCOPG_EXTENSIONS=1 -DPSYCOPG_NEW_BOOLEAN=1 -DHAVE_PQFREEMEM=1 -I/usr/include/python3.3m -I. -I/usr/include -I/usr/include/pgsql/server -c psycopg/psycopgmodule.c -o build/temp.linux-x86_64-3.3/psycopg/psycopgmodule.o -Wdeclaration-after-statement

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

./psycopg/psycopg.h:30:20: fatal error: Python.h: No such file or directory

 #include <Python.h>

                    ^

compilation terminated.

error: command 'gcc' failed with exit status 1

----------------------------------------
Cleaning up...
Command /home/flyer/.virtualenvs/p3test/bin/python3 -c "import setuptools;__file__='/home/flyer/.virtualenvs/p3test/build/psycopg2/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-mrsky4-record/install-record.txt --single-version-externally-managed --install-headers /home/flyer/.virtualenvs/p3test/include/site/python3.3 failed with error code 1 in /home/flyer/.virtualenvs/p3test/build/psycopg2
Storing complete log in /home/flyer/.pip/pip.log

Буду признателен за вашу помощь.

Ответ 1

Вам не хватает файлов с файлами python3

./psycopg/psycopg.h:30:20: fatal error: Python.h: No such file or directory

вы можете найти их в пакете python3-devel.

Ответ 2

Установите пакет python3-devel, чтобы заставить его работать

sudo dnf install python3-devel

Если он работает тогда, или если он требует файл libpq-fe.h, то установите его с помощью команды:

sudo dnf install postgresql-devel

Ответ 3

Как указано в других ответах, это вызвано тем, что не установлен правильный пакет "devel" Python. На CentOS пакет Python "devel" rpm соименован с соответствующей версией. Например, с этой записью текущие версии:

python34-devel для хранилища epel

python36u-devel для репозитория ius

Пример команды Yum (предполагается Репозиторий EPEL настроен):

sudo yum install python34-devel

Связанный ответ с ошибкой сервера: https://serverfault.com/info/710354/repository-for-python3-devel-on-centos-7