35

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,161
  • 2
  • 13
  • 19

10 Answers10

41

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,869
  • 8
  • 42
  • 48
15

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
  • 400,186
  • 35
  • 402
  • 621
  • 1
    ah, sorry, I see, it's the c source file, sorry – ehacinom Sep 25 '14 at 03:14
  • 1
    -1. Generally I do not recommend hardcoding any external flags for compilaton. See pkg-config tool that helps resolving some compile-time flags, like: `pkg-config python --cflags` . – Kuchara Jun 14 '23 at 17:48
14
  • 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
  • 12,947
  • 1
  • 71
  • 56
  • 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
  • 1
    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
  • 5,219
  • 5
  • 21
  • 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,556
  • 4
  • 20
  • 29
gzerone
  • 2,179
  • 21
  • 24
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
  • 733
  • 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,915
  • 11
  • 36
  • 70
departed
  • 71
  • 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
  • 21,738
  • 2
  • 113
  • 124
0

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

dnf install -y python39-devel
Chandan
  • 35
  • 6