Python.h:没有这样的文件或目录

时间:2012-06-14 21:02:38

标签: c++ python include cmake kdevelop

我最近在运行Ubuntu 12.04 LTS的Macbook Pro上安装了用于C ++开发的KDevelop 4。

我想在我的C ++代码中嵌入Python应用程序。为此,需要包含Python.h头文件。所以,我做到了。

#include <iostream>
#include <Python.h>

int main(int argc, char **argv) {
    Py_Initialize();
    return 0;
}

但是,在运行时,我收到了IDE的以下响应:

fatal error: Python.h: No such file or directory

然而,我很快就找到了问题。我没有下载python-dev软件包。所以,我做到了。我又跑了,但又出现了同样的错误。因此,我认为KDevelop不包含头文件一定是个问题。因此,我将相关文件夹添加到包含路径,KDevelop立即通过删除上面代码中第二个include语句下面的红色下划线来识别。

但问题仍然存在。我犯了同样的错误。非常感谢您提供的任何帮助或意见: - )

非常感谢。

编辑:我之前错过的一些细节是KDevelop正在为我的项目使用cmake。我想我的问题发生的原因是因为cmake不知道适当的编译器和链接器路径。感谢您为cmake设置正确路径的任何帮助。

6 个答案:

答案 0 :(得分:36)

在您的CMakeLists.txt中,尝试添加以下内容:

find_package(PythonLibs REQUIRED)
include_directories(${PYTHON_INCLUDE_DIRS})
target_link_libraries(<your exe or lib> ${PYTHON_LIBRARIES})

有关命令的详细信息,请运行:

cmake --help-module FindPythonLibs
cmake --help-command find_package
cmake --help-command include_directories
cmake --help-command target_link_libraries

答案 1 :(得分:28)

sudo apt-get install python2.7-dev

在“Python.h:没有这样的文件或目录”问题上为我工作

答案 2 :(得分:11)

您希望在编译行中包含以下内容:

`python-config --cflags`

,这在链接行:

`python-config --ldflags`

答案 3 :(得分:4)

很可能Python.h不在您的构建系统的包含路径中。您可以通过运行

找到Python.h的位置
dpkg -L python-dev | grep Python.h

这也将验证python-dev包实际安装了Python.h。

我这里没有kdevelop,但大多数IDE都有一个设置,您可以在其中指定构建系统使用的包含路径,并且您应该能够添加Python.h所在的路径。

编辑:

正如Nikolai暗示的那样,您还需要为链接阶段添加正确的库路径。 (python-config --ldflags的输出)。

答案 4 :(得分:2)

我认为它已经安装好了。找到路径:

find / -iname python.h

当你这样做时,编译时添加

-I python_h_path

答案 5 :(得分:1)

对于Linux Ubuntu Putty用户试试这个:

sudo apt-get update
sudo apt-get install python-dev

然后编译它

gcc -o check xyz.c -I/usr/include/python2.7/ -lpython2.7

然后运行它

./check