Fix error “Fatal error: Python.h: No such file or Directory” when using pip
When you want to install an application or build a module for specific python version by command ‘pip‘ on OS Ubuntu/Debian. You are not lucky when have to encounter the error “Fatal error: Python.h: No such file or Directory” like example below :
# pip install pycurl .. .. gcc -pthread -fno-strict-aliasing -fwrapv -Wall -Wstrict-prototypes -fPIC -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/usr/include/python2.7 -c src/MD2.c -o build/temp.linux-x86_64-2.7/src/MD2.o src/MD2.c:31:20: fatal error: Python.h: No such file or directory compilation terminated. error: command 'gcc' failed with exit status 1
You will consider what is ‘Python.h‘ and search google for finding the resolution to handle this case. So we will go to next part, how to fix this error.
Fix error “fatal error: Python.h: No such file or Directory”
Python.h is just a header file, be used by ‘gcc‘ application to build application/module for a lot of program like Python. So you have to install package named ‘python-dev‘. This package includes many header files, static files and neccessary development tools to build module Python, extend Python interpreter,… Ok, we will install ‘python-dev‘ with these step:
+ Python version 2.x+
# sudo apt-get install python-dev
+ Python version 3.x+
# sudo apt-get install python3-dev
Example, output installing ‘python-dev’ :
# sudo apt-get install python-dev -y Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: libexpat1-dev libssl-dev libssl-doc python2.7-dev zlib1g-dev The following NEW packages will be installed: libexpat1-dev libssl-dev libssl-doc python-dev python2.7-dev zlib1g-dev 0 upgraded, 6 newly installed, 0 to remove and 2 not upgraded. Need to get 32.5 MB of archives. After this operation, 48.2 MB of additional disk space will be used. Do you want to continue [Y/n]? y Get:1 http://mirrors.service.networklayer.com/ubuntu/ trusty-updates/main libexpat1-dev amd64 2.0.1-7.2ubuntu1.1 [216 kB] Get:2 http://mirrors.service.networklayer.com/ubuntu/ trusty/main zlib1g-dev amd64 1:1.2.3.4.dfsg-3ubuntu4 [165 kB] Get:3 http://mirrors.service.networklayer.com/ubuntu/ trusty-updates/main libssl-dev amd64 1.0.1-4ubuntu5.5 [1,525 kB] Get:4 http://mirrors.service.networklayer.com/ubuntu/ trusty-updates/main libssl-doc all 1.0.1-4ubuntu5.5 [1,034 kB] Get:5 http://mirrors.service.networklayer.com/ubuntu/ trusty-updates/main python2.7-dev amd64 2.7.3-0ubuntu3.1 [29.5 MB] Get:6 http://mirrors.service.networklayer.com/ubuntu/ trusty/main python-dev amd64 2.7.3-0ubuntu2 [1,088 B] Fetched 32.5 MB in 1s (21.4 MB/s) Selecting previously unselected package libexpat1-dev. (Reading database ... 55152 files and directories currently installed.) Unpacking libexpat1-dev (from .../libexpat1-dev_2.0.1-7.2ubuntu1.1_amd64.deb) ... Selecting previously unselected package zlib1g-dev. Unpacking zlib1g-dev (from .../zlib1g-dev_1%3a1.2.3.4.dfsg-3ubuntu4_amd64.deb) ... Selecting previously unselected package libssl-dev. Unpacking libssl-dev (from .../libssl-dev_1.0.1-4ubuntu5.5_amd64.deb) ... Selecting previously unselected package libssl-doc. Unpacking libssl-doc (from .../libssl-doc_1.0.1-4ubuntu5.5_all.deb) ... Selecting previously unselected package python2.7-dev. Unpacking python2.7-dev (from .../python2.7-dev_2.7.3-0ubuntu3.1_amd64.deb) ... Selecting previously unselected package python-dev. Unpacking python-dev (from .../python-dev_2.7.3-0ubuntu2_amd64.deb) ... Processing triggers for man-db ... Setting up libexpat1-dev (2.0.1-7.2ubuntu1.1) ... Setting up zlib1g-dev (1:1.2.3.4.dfsg-3ubuntu4) ... Setting up libssl-dev (1.0.1-4ubuntu5.5) ... Setting up libssl-doc (1.0.1-4ubuntu5.5) ... Setting up python2.7-dev (2.7.3-0ubuntu3.1) ... Setting up python-dev (2.7.3-0ubuntu2) ...
Now recheck the process installing 3rd party module/application for Python by using pip command. You will see the error ‘Fatal error: Python.h: No such file or Directory’ has gone. Good luck !
Nguồn: https://cuongquach.com/