2012-06-14 15 views
17

我最近在运行Ubuntu 12.04 LTS的Macbook Pro上安装了KDevelop 4 for C++开发。Python.h:没有这样的文件或目录

我想在我的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设置正确的路径。

+0

http://stackoverflow.com/questions/4097339/missing-python-h-while-trying-to-compile-ac-extension -module – ddzialak

+0

@ddzialak - 是的,在问这个问题之前,我看了一下这个问题。这个问题没有帮助我的原因是我的Python.h文件实际上存在于/usr/include/python2.7。我手动检查了它,当我在编辑器中单击Python.h时,它会打开文件。 –

+0

@ShubhamGoyal你能帮我吗? http://stackoverflow.com/questions/31577539/how-can-i-incorporate-cmake-file-when-building-with-distutils-python – mayooran

回答

24

在你的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 
+0

是的,这工作。实际上,我在看到你的答案之前已经完成了它的工作,并且在阅读了很多关于CMake的文章后,解决方案是一样的:D –

+0

这里是我的CMakeLists.txt文件的链接 - http://paste.ubuntu。 com/1042894/ –

+0

@ShubhamGoyal很好。实际上,查看你的CMakeLists.txt让我注意到,我在原始答案中忘记了一系列大括号。现在修复。 – Fraser

4

最有可能的Python.h不在您的构建系统的包含路径中。你可以通过运行找到你的Python.h的位置

dpkg -L python-dev | grep Python.h 

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

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

编辑:

至于尼古拉暗示,你还需要添加正确的库路径链接阶段。 (python-config --ldflags的输出)。

+0

我已经确认python-dev包没有安装Python.h文件。问题是我不知道在哪里或如何在cmake中添加正确的库路径。希望在这方面的任何帮助。我是cmake的完整初学者。我第一次听到这个词是在发布这个问题之后。 –

10

你想包括编译行:

`python-config --cflags` 

这个链接线:

`python-config --ldflags` 
+0

如果我在这里是一个noob,我很抱歉,请您详细说明这种情况下编译行和链接行的含义吗?由于我使用IDE,因此我不在终端上编译和链接。 –

+1

您的IDE的设置包含路径,库路径以及编译器和链接器标志。运行上面的命令 - 第一个命令为你提供'-I'指令(包括路径)和编译器标志,第二个为链接器执行相同的操作。将这些设置放入IDE中的适当设置中。 –

+0

嗯... KDevelop为我的项目使用cmake。但我从未使用过cmake,并希望在设置路径方面有所帮助。 –

27
sudo apt-get install python2.7-dev 

为我工作的“Python。H:没有这样的文件或目录”的问题

+0

从26.10.13开始,确认仍在使用Debian测试。 – timss

+0

下面是CentOS帮助我的:'sudo yum search python'来找到合适的-devel包,然后'sudo yum install python26-devel.x86_64'为我的特定版本的Python。 –

0

对于Linux Ubuntu的腻子用户试试这个:

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

然后编译

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

然后运行它

./check 
1

我承担它已经安装。找到路径:

find/-iname python.h 

,当你已经这样做了,编译时添加

-I python_h_path 
相关问题