33

I am trying to compile a Python extension written in C on a CentOS machine. I am getting

error: Python.h: No such file or directory

It works fine on ubuntu, where I have python-dev installed using apt-get.

I tried installing python-devel using

yum install python-devel

but it is already installed. How do I fix this error?

yzernik
  • 1,101
  • 2
  • 12
  • 18

9 Answers9

40

If you using python3 You could install python34-devel for that

It's available on EPEL Repository and has python34-devel package available

You simply just run this command to get it installed

yum install python34-devel

Hope it's help

*note At this time python34-devel is the most updated version of python 3.4

Aditya Kresna Permana
  • 11,266
  • 7
  • 38
  • 46
16

On my system the Python.h header file is in the path /usr/include/python2.6/. As this path is not searched by the pre-processor by default, you have to add it to the list of paths to search. This is done with the -I option to the compiler, like this:

$ gcc -I/usr/include/python2.6 source.c -o program

Change the path above to the actual path on your system. You can find it either with the find command as proposed in a comment, of with the locate command if it's installed.

Some programmer dude
  • 380,411
  • 33
  • 383
  • 585
11
  • for CentOS 7.4
    • Python 3.6.6 : yum -y install python36-devel
    • Python 2 : yum -y install python-devel
  • for Ubuntu
    • Python 3.6: apt-get install libpython3.6-dev
crifan
  • 10,971
  • 1
  • 61
  • 46
  • 4
    `yum -y install python3-devel` will install the latest available python3 version for that version of CentOS. – Matt Jan 10 '20 at 18:15
  • I was able to resolve the issue and build my docker image by `yum -y install python3-devel`. Previously I installed `python3-dev` and I was able to build my image. Is there a name change recently? – panc Dec 06 '21 at 21:27
2

For centos 8+

dnf install -y python3-devel
d_kennetz
  • 4,918
  • 5
  • 20
  • 44
1

If your are running Centos 8 , you can use :

dnf install -y python38-devel

dnf install -y python3-devel did not work for me.

0

Install python3.4 (include pip) & python3.4-dev packages on Centos6.X:

yum install http://dl.iuscommunity.org/pub/ius/stable/CentOS/6/x86_64/python34u-3.4.2-1.ius.centos6.x86_64.rpm
yum install http://dl.iuscommunity.org/pub/ius/stable/CentOS/6/x86_64/python34u-devel-3.4.2-1.ius.centos6.x86_64.rpm
Martin Gergov
  • 1,455
  • 4
  • 18
  • 27
gzerone
  • 2,071
  • 20
  • 23
0

I had a similar problem where default Python was 2.7 but pip was running against 3.4, and I wanted to use 2.7. So I did: yum remove python34-pip and yum install python2-pip. Solved it!

ScalaWilliam
  • 732
  • 4
  • 16
0

I too had similar problem.

./python/py_defines.h:39:20: fatal error: Python.h: No such file or directory

Whereas the find command showed that the python.h exists.

The above solutions did not work however the below command execution worked for me.

yum install python27-python-devel.x86_64

Not much different but wasted lots of time.

Sinto
  • 3,790
  • 11
  • 36
  • 62
departed
  • 61
  • 1
  • 4
0

This depends on the Python you have!

You need a dev package, the version X.X.X for Python X.X.X you have, you can search on https://centos.pkgs.org/7/ius-x86_64.

By example, if you have Python 3.6.5 from IUS, you need to install https://centos.pkgs.org/7/ius-x86_64/python36u-devel-3.6.5-1.ius.centos7.x86_64.rpm.html.

Thomas Decaux
  • 19,993
  • 2
  • 99
  • 107