yzernik
yzernik

Reputation: 1191

Can't find Python.h file on CentOS

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?

Upvotes: 36

Views: 80896

Answers (10)

Chandan
Chandan

Reputation: 35

I had the same problem with Python3.9 on Centos8. I fixed it by installing as below:

dnf install -y python39-devel

Upvotes: 0

behanzin777
behanzin777

Reputation: 119

If your are running Centos 8 , you can use :

dnf install -y python38-devel

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

Upvotes: 1

Aditya Kresna Permana
Aditya Kresna Permana

Reputation: 12099

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

Upvotes: 43

d_kennetz
d_kennetz

Reputation: 5359

For centos 8+

dnf install -y python3-devel

Upvotes: 3

crifan
crifan

Reputation: 14328

  • 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

Upvotes: 14

Thomas Decaux
Thomas Decaux

Reputation: 22671

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.

Upvotes: 0

gzerone
gzerone

Reputation: 2227

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

Upvotes: 0

departed
departed

Reputation: 71

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.

Upvotes: 0

ScalaWilliam
ScalaWilliam

Reputation: 741

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!

Upvotes: 0

Some programmer dude
Some programmer dude

Reputation: 409186

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.

Upvotes: 15

Related Questions