Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

I'm trying to install PyQt5 on my Ubuntu 12.04 box. So after downloading it from here I untarred it, ran python configure.py and make. Make however, results in the following:

cd qpy/ && ( test -f Makefile || /opt/qt5/bin/qmake /home/kram/Downloads/PyQt-gpl-5.0/qpy/qpy.pro -o Makefile ) && make -f Makefile 
make[1]: Map '/home/kram/Downloads/PyQt-gpl-5.0/qpy' is entered
cd QtCore/ && ( test -f Makefile || /opt/qt5/bin/qmake /home/kram/Downloads/PyQt-gpl-5.0/qpy/QtCore/QtCore.pro -o Makefile ) && make -f Makefile 
make[2]: Map '/home/kram/Downloads/PyQt-gpl-5.0/qpy/QtCore' is entered
g++ -c -pipe -fno-strict-aliasing -O2 -Wall -W -fPIC -D_REENTRANT -DQT_NO_DEBUG -DQT_CORE_LIB -I/opt/qt5/mkspecs/linux-g++ -I. -I. -I../../QtCore -I/usr/local/include/python2.7 -I/opt/qt5/include -I/opt/qt5/include/QtCore -I. -o qpycore_chimera.o qpycore_chimera.cpp
qpycore_chimera.cpp:21:20: fatal error: Python.h: File or folder does not exist
compilation terminated.
make[2]: *** [qpycore_chimera.o] Error 1
make[2]: Map '/home/kram/Downloads/PyQt-gpl-5.0/qpy/QtCore' is left
make[1]: *** [sub-QtCore-make_first] Error 2
make[1]: Map '/home/kram/Downloads/PyQt-gpl-5.0/qpy' is left
make: *** [sub-qpy-make_first-ordered] Error 2

(I translated some parts of the error message from Dutch to English, so some words may be a bit off from the normal wording..)

Does anybody what the problem is here? Where could the relevant Python.h file be?

share|improve this question

3 Answers 3

up vote 25 down vote accepted

The problem is that the include path for all python headers in every Makefile will be pointing to /usr/local/include/python2.7 , which should have been /usr/include/python2.7

There are 2 possible solutions for this. Either you can change all the occurrence of this in every Makefile or else you can create a symlink to that location

sudo ln -s /usr/include/python2.7 /usr/local/include/python2.7

Now you can run make

share|improve this answer
1  
This is the correct answer, I tried and it works for me. Thanks. –  jgmao Aug 22 '13 at 16:25
1  
Works here as well on Ubuntu 12.04.3 x64 with Python 2.7.3 –  Marcus Ottosson Nov 16 '13 at 11:06
1  
@kramer Can you verify whether this worked for you. If yes please accept this as an answer. –  Rony Varghese Jan 27 '14 at 7:29
1  
This is the one, guys! :) –  mlvljr Jun 12 '14 at 20:40
sudo apt-get install python-dev

Your missing the python header files.

share|improve this answer
    
I thought that as well, but I've already got them installed. After running your command it says python-dev is already the newest version. –  kramer65 Jul 17 '13 at 11:45
    
What version are you installing for and what version of python-dev do you have –  Jakob Bowyer Jul 17 '13 at 11:47
    
I don't exactly know how to check the version of python-dev, but I ran sudo apt-get install python2.7-dev, which also told me I've got the latest version. –  kramer65 Jul 17 '13 at 12:07
    
Is Python.h in your include directory? is the library registered (ldconfig)? Is it the correct version? Did you try manually setting the path for python? –  Sebastian Lange Jul 17 '13 at 12:10
1  
Try running locate Python.h. If no results are given run find / -type f -name "Python.h" 2>/dev/null. This is where your file is located. Add this path to your inclusion directories calling python configure.py with correct parameter. Check configure help for known parameters. –  Sebastian Lange Jul 22 '13 at 8:30

The problem you're having is that PyQt assumes you're not using your distro's managed python, and instead defaults to looking for sip in /usr/local/include/python2.7.

Luckily, configure.py provides options to override the python and sip include locations:

python configure.py --sip-incdir /usr/include/python2.7 py_inc_dir=/usr/include/python2.7

This solution should preferred to symlinking /usr/include/python2.7 into /usr/local/include/python2.7 as that will enable manually installed software to pollute (or corrupt packages installed to) distro-managed paths.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.