我在我的Ubuntu系统上有Python,但gcc找不到Python.h

我在学校的电脑上,所以我不能安装任何东西。

我正在尝试创build可以在Python中运行的C代码。 看来我所find的所有文章都要求你使用

#include <Python.h> 

我这样做,但是当我编译它抱怨说没有这样的文件或目录。

电脑有Python(至less它在terminal有python命令,我们可以运行任何我们想要的Python代码)。

我在terminal中键入了locate Python.h ,但是什么也没find。

我有两个问题:

  1. 我可以编写C代码,我可以用Python调用没有Python.h

  2. 我错过了什么,而电脑实际上有Python.h

你需要包含Python.hpython-dev

在Ubuntu上,您需要安装一个名为python-dev的软件包。 由于这个包似乎没有安装( locate Python.h没有find任何东西),你locate Python.h安装它,我们需要一个不同的解决scheme。

你可以在你的主目录下安装Python – 你不需要任何特殊的权限来执行此操作。 如果您可以使用Web浏览器并运行gcc,这应该适用于您。 为此

  1. 下载源代码压缩包 。

  2. 解压缩

     tar xjf Python-2.7.2.tar.bz2 
  3. build立和安装

     cd Python-2.7.2 ./configure --prefix=/home/username/python --enable-unicode=ucs4 make make install 

现在,你的主目录中有一个完整的Python安装。 在编译时将-I /home/username/python/include传递给gcc以使其知道Python.h 。 链接时传递-L /home/username/python/lib-lpython2.7

你必须使用#include“python2.7 / Python.h”而不是#include“Python.h”

在Ubuntu上你可以在terminal上inputsudo apt-get install python-dev -y来安装python-dev软件包。

对于Ubuntu 15.10和Python 3来说,由于它们没有Python.h但是具有pipe理权限,因此可以解决这个问题:

 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 

头文件现在由libpython2.7-dev提供 。

您可以使用packages.ubuntu.com上的search表单来找出Python.h提供的包。

我试图在CentOS 7机器上构build一个非常旧的omniORB副本时遇到了同样的问题。 通过安装python开发库解决了这个问题:

 # yum install python-devel 

这将Python.h安装到:

/usr/include/python2.7/Python.h

去新立得包pipe理器。 重新加载 – >searchpython – >select你想要的Python包 – >提交 – >为我安装Works;)

确切地说,你需要安装的软件包是python-dev。

这意味着你不是为Python开发安装库。

如果你在Linux操作系统上,你可以通过下面的命令分别解决这个问题:

  • Ubuntu(Debian):

    sudo apt-get install python-dev (Py2)或者sudo apt-get install python3-dev (Py3)

  • Rehat(CentOS):

    yum install python-devel

发生这种情况是因为Python.h不在默认包含文件夹(即/usr/include/ )中。

安装Python-dev可能会有所帮助:

 $ sudo apt-get install python-dev 

但是大多数情况下问题会持续下去,因为开发包是在包含文件夹本身( /usr/include/python2.7python3 )内的单独文件夹中创build的。

所以你应该在gcc使用-I选项来指定库文件夹,或者在这些文件夹中创build软链接到外部(我更喜欢前一个选项)。

gcc使用-I选项:

 $ gcc -o hello -I /usr/include/python2.7 helloworld.c 

创build软链接:

 $ sudo ln -sv /usr/include/python2.7/* /usr/include/