我在我的Ubuntu系统上安装了Python,但是gcc找不到Python.h文件。

7 浏览
0 Comments

我在我的Ubuntu系统上安装了Python,但是gcc找不到Python.h文件。

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

我正在尝试创建可以在Python中运行的C代码。但是,所有我找到的文章都要求使用#include

我照做了,但编译时却抱怨找不到该文件或目录。

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

我在终端中输入locate Python.h,但没有找到任何结果。

我的两个问题是:

  1. 我能否在没有Python.h的情况下编写可以在Python中调用的C代码?
  2. 我是否遗漏了什么,这台电脑上实际上有Python.h文件?
0
0 Comments

在Ubuntu系统中,我安装了Python,但gcc找不到Python.h文件。根据上述内容,问题的出现原因是gcc无法找到Python.h文件。解决方法是使用#include "python2.7/Python.h"代替#include "Python.h"

这个解决方法可以解决问题,因为Python.h文件的路径在python2.7文件夹中。通过指定正确的路径,gcc就能够找到Python.h文件并进行编译。

根据评论中的反馈,有人安装了python-dev,但仍然无法解决问题。然而,当他们看到上述解决方法后,问题得到了解决。他们非常感激这个解决方法,并通过点赞来推广这个解决方法。

对于包含Python.h的C/C++代码的所有者来说,这个解决方法是合理的。但对于非所有者来说,最好修改构建脚本来更改包含目录。这个问题可能是因为特定的库不考虑到Python 3的存在。另外,绝对不应该通过创建符号链接来假装两个Python版本是相同的,这可能会导致严重问题。

关于pip无法找到Python.h的"正确"解决方法是什么?在Ubuntu18上安装了py3.7后,libpython3.7-dev并没有添加任何头文件,但是在/usr/include/python3.6m中存在这些头文件。可以创建一个符号链接python3.7m -> python3.6m,然后使用pip安装库。然而,这种方法极其有问题,不应该这样做。相反,应该采取其他解决方法。

0
0 Comments

我在Ubuntu系统上安装了Python,但gcc无法找到Python.h文件。这个问题的原因是我没有安装名为`python-dev`的软件包,因此无法找到Python.h文件。由于我无法在系统中全局安装该软件包,因此需要另一种解决方案。我可以在我的主目录中安装Python - 这不需要任何特殊权限。如果我可以使用Web浏览器和运行gcc,那么以下方法适用于我:

1. 下载Python源代码压缩包。

2. 使用`tar xjf Python-2.7.2.tar.bz2`命令解压缩文件。

3. 使用以下命令构建和安装Python:

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`参数。

然而,我遇到了一个新的错误信息:`/home/pdem/python/Include/Python.h:8:22: error: pyconfig.h: No such file or directory`。我不知道这个错误的原因。路径中的大写字母`I`让我有些惊讶 - 我应该使用安装Python的位置中的`Python.h`文件,而不是解压缩源代码压缩包的位置。已经安装的Python版本并不重要 - 我正在安装自己的Python,可以选择任何版本,并且它可以与系统范围的安装共存。

另外,`python/Lib`目录包含Python标准库的模块。我认为你指的是`-L...python/Python/`,该目录中包含一些`.c`和`.o`文件。

不,我指的就是我写的那样。你混淆了源代码分发中的路径`Lib/`和安装软件的路径`$prefix/lib`。

在尝试上述方法之前,你可以使用`locate Python.h`命令查找一下是否已经有这个文件。如果能够找到该文件,则可能只是一个路径问题。你可以参考这个答案:[stackoverflow.com/a/19344978/4954434](http://stackoverflow.com/a/19344978/4954434)。

另外,你提到的命令`$ gcc -Wall -I /home/vineesh/python/include insertion_sort.c -nostartfiles -L /home/vineesh/python/lib -lpython2.7 -o insertion_sort`出现了错误`/usr/include/numpy/ndarrayobject.h:17:20: fatal error: Python.h: No such file or directory compilation terminated.`。

0
0 Comments

我在Ubuntu系统上安装了Python,但gcc找不到Python.h文件。经过查找,发现问题的原因是缺少python-dev包,该包含有Python.h文件。解决方法是安装python-dev包。在Ubuntu 12.04版本中,安装了python-dev后会在/usr/include/python2.7目录下生成Python的相关文件,但却没有python.h文件。根据danielcooperxyz的建议,可以使用gcc $(python-config --includes)命令来解决问题。另外,在当前的Ubuntu发行版中,可以使用python3-dev来解决问题(假设使用的是Python 3)。对于Python 3.7版本,则需要安装python3.7-dev。对于Visual Studio用户,如果想将这个命令添加到"C/C++"的"Additional Options"中,可以使用反引号将python-config --includes命令括起来。另外,python-dev已经不再适用,应该使用python3-dev或python-dev-is-python3。有人会问为什么大家都建议安装python-dev包,我猜测这是因为这些头文件应该已经包含在原始的Python安装中了。

0