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

时间:2011-11-26 22:49:52

标签: python c ubuntu header

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

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

#include <Python.h>

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

计算机有Python(至少它在终端中有python命令,我们可以运行我们想要的任何Python代码。)

我在终端输入了locate Python.h但没有找到任何内容。

我有两个问题:

  1. 我可以编写可以在没有Python.h的情况下用Python调用的C代码吗?

  2. 我错过了什么,计算机实际上有Python.h

14 个答案:

答案 0 :(得分:47)

您需要包含python-dev

Python.h

答案 1 :(得分:42)

在Ubuntu上,您需要安装名为python-dev的软件包。由于似乎没有安装此软件包(locate Python.h没有找到任何内容)而且您无法自己在系统范围内安装它,我们需要一个不同的解决方案。

您可以在主目录中安装Python - 您无需任何特殊权限即可。如果您被允许使用Web浏览器并运行gcc,这应该适合您。为此

  
  1. 下载the source tarball

  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
    
  4. 现在,您在主目录中安装了完整的Python。编译时将-I /home/username/python/include传递给gcc,以使其了解Python.h。链接时传递-L /home/username/python/lib-lpython2.7

答案 2 :(得分:30)

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

答案 3 :(得分:22)

对于Ubuntu 15.10和Python 3,由于他们没有Python.h但具有管理权限,因此可以解决此问题:

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

答案 4 :(得分:16)

在ubuntu上,您只需在终端中键入sudo apt-get install python-dev -y即可安装python-dev软件包。

答案 5 :(得分:6)

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

您可以使用search form at packages.ubuntu.com找出提供的Python.h包。

答案 6 :(得分:4)

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

# yum install python-devel

这将Python.h安装到:

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

答案 7 :(得分:4)

你需要安装python-dev 对于Ubuntu:
sudo apt-get install python-dev # for python2.x installs sudo apt-get install python3-dev # for python3.x installs
有关更多发行版,请参阅 -
https://stackoverflow.com/a/21530768/6841045

答案 8 :(得分:4)

我在ubuntuforums(ubuntuforums)中找到答案,你可以将它添加到你的gcc'$(python-config --includes)'

gcc $(python-config --includes) urfile.c

答案 9 :(得分:2)

locate Python.h

如果输出为空,则找到您的python版本

python --version

让我们说它是X.x,即2.7或3.6、3.7、3.8 然后使用相同版本的python安装头文件和静态库

sudo apt-get install pythonX.x-dev

答案 10 :(得分:1)

转到Synaptic包管理器。重新加载 - &gt;搜索python - &gt;选择你想要的python包 - &gt;提交 - &gt;安装 适合我;)

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

答案 11 :(得分:0)

这意味着你不是python dev的安装库。

如果您使用的是Linux操作系统,则可以通过以下命令单独解决此问题:

  • Ubuntu(Debian):

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

  • Rehat(CentOS):

    yum install python-devel

答案 12 :(得分:0)

这是因为Python.h不在默认的包含文件夹(/usr/include/)中。

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

$ sudo apt-get install python-dev 

但主要是问题会持续存在,因为开发包是在包含文件夹本身(/usr/include/python2.7python3)内的单独文件夹中创建的。

因此,您应该使用-I中的gcc选项指定库文件夹,或者创建指向这些文件夹内部所有内容的软链接(我更喜欢前一个选项)。

-I中使用gcc选项:

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

创建软链接

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

答案 13 :(得分:0)

没有一个答案对我有用。如果您在Ubuntu上运行,则可以尝试:

使用python3:

sudo apt-get install python3 python-dev python3-dev \
     build-essential libssl-dev libffi-dev \
     libxml2-dev libxslt1-dev zlib1g-dev \
     python-pip

使用Python 2:

sudo apt-get install python-dev  \
     build-essential libssl-dev libffi-dev \
     libxml2-dev libxslt1-dev zlib1g-dev \
     python-pip