问题
$ 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
I am trying to install psycopg2 in my virtualenv to connect django with the postgresql database.
In Fedora 19 and postgresql-9.2 the path to pg_config was:
/usr/pgsql-9.2/bin
In Fedora 20, this directory does not exist.
However pg_config can be found in /usr/bin/pg_config
.
Trying to install 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
I would appreciate your help.
回答1:
You are missing python3 include files
./psycopg/psycopg.h:30:20: fatal error: Python.h: No such file or directory
you can probably find them in the python3-devel
package.
回答2:
Install the python3-devel package to get it work
sudo dnf install python3-devel
If it works then alright or if it requires libpq-fe.h file then install it using the command:
sudo dnf install postgresql-devel
回答3:
As indicated in the other answers this is caused by not having the right Python "devel" package installed. On CentOS, the Python "devel" rpm package is numbered with the with the qualified version. For example as of this writing the current versions are:
python34-devel
for epel repository
python36u-devel
for ius repository
Example Yum command (assumes EPEL repository is configured):
sudo yum install python34-devel
Related answer from server fault: https://serverfault.com/questions/710354/repository-for-python3-devel-on-centos-7
来源:https://stackoverflow.com/questions/21650567/psycopg2-fails-to-install-on-python-3-with-pip-issuing-a-fatal-error