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

74 投票
15 回答
152655 浏览
提问于 2025-04-17 07:08

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

我想写一段可以在Python中运行的C代码。可是我发现的所有文章都要求使用

#include <Python.h>

我照做了,但编译的时候却报错说没有这样的文件或目录。

这台电脑上有Python(至少在终端里可以用python命令,我们可以运行任何Python代码)。

我在终端里输入了locate Python.h,但什么也没找到。

我有两个问题:

  1. 我能写不需要Python.h的C代码,然后在Python中调用吗?

  2. 我是不是漏掉了什么,其实这台电脑上有Python.h

15 个回答

47

你需要用 #include "python2.7/Python.h" 这个来代替 #include "Python.h"

48

在Ubuntu系统上,你需要安装一个叫做python-dev的包。因为这个包似乎没有安装(用locate Python.h找不到任何东西),而你又不能自己在系统范围内安装它,所以我们需要找其他办法。

你可以在自己的家目录下安装Python——这样做不需要任何特别的权限。如果你可以使用网页浏览器并且能运行gcc,这个方法应该对你有效。为此,

  1. 下载这个源代码压缩包

  2. 用下面的命令解压:

    tar xjf Python-2.7.2.tar.bz2
    
  3. 用下面的命令构建并安装:

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

现在,你在自己的家目录下有了完整的Python安装。在编译时,给gcc加上-I /home/username/python/include的参数,这样它就能找到Python.h了。在链接时,使用-L /home/username/python/lib-lpython2.7

73

你需要安装一个叫做 python-dev 的软件包,它里面包含了 Python.h 这个文件。

撰写回答