I have Python on my Ubuntu system, but gcc can't find Python.h
I am on a school computer, so I can't install anything.
I am trying to create C code which can be run in Python. It seems all the articles I am finding on it require you to use
#include <Python.h>
I do this, but when I compile it complains that there is no such file or directory.
The computer has Python (at least it has the python
command in the terminal, and we can run whatever Python code we want).
I typed in locate Python.h
in the terminal, but it found nothing.
I have two questions:
Can I write C code that I can call in Python without
Python.h
?Am I missing something, and the computer actually has
Python.h
?
You need the python-dev
package which contains Python.h
On Ubuntu, you would need to install a package called python-dev
. Since this package doesn't seem to be installed (locate Python.h
didn't find anything) and you can't install it system-wide yourself, we need a different solution.
You can install Python in your home directory -- you don't need any special permissions to do this. If you are allowed to use a web browser and run a gcc, this should work for you. To this end
Download the source tarball.
-
Unzip with
tar xjf Python-2.7.2.tar.bz2
-
Build and install with
cd Python-2.7.2 ./configure --prefix=/home/username/python --enable-unicode=ucs4 make make install
Now, you have a complete Python installation in your home directory. Pass -I /home/username/python/include
to gcc when compiling to make it aware of Python.h
. Pass -L /home/username/python/lib
and -lpython2.7
when linking.
You have to use #include "python2.7/Python.h" instead of #include "Python.h".
For Ubuntu 15.10 and Python 3, comming to this question as they don't have Python.h
but having administrative rights, the following might solve it:
sudo apt-get install python-dev
sudo apt-get install python3-dev
sudo apt-get install libpython3-dev
sudo apt-get install libpython3.4-dev
sudo apt-get install libpython3.5-dev