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

Shu*_*yal 27 c++ python kdevelop cmake include

我最近在运行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;
}
Run Code Online (Sandbox Code Playgroud)

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

fatal error: Python.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)

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

但问题仍然存在.我犯了同样的错误.非常感谢你们提供的任何帮助或输入:-)

非常感谢.

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

Fra*_*ser 38

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

find_package(PythonLibs REQUIRED)
include_directories(${PYTHON_INCLUDE_DIRS})
target_link_libraries(<your exe or lib> ${PYTHON_LIBRARIES})
Run Code Online (Sandbox Code Playgroud)

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

cmake --help-module FindPythonLibs
cmake --help-command find_package
cmake --help-command include_directories
cmake --help-command target_link_libraries
Run Code Online (Sandbox Code Playgroud)


Dim*_*tas 29

sudo apt-get install python2.7-dev
Run Code Online (Sandbox Code Playgroud)

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

  • sudo apt-get install pythonX.X-dev (我的版本XX)以防万一... (3认同)

Nik*_*sov 11

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

`python-config --cflags`
Run Code Online (Sandbox Code Playgroud)

这在链接线上:

`python-config --ldflags`
Run Code Online (Sandbox Code Playgroud)


nik*_*iko 6

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

dpkg -L python-dev | grep Python.h
Run Code Online (Sandbox Code Playgroud)

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

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

编辑:

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


小智 5

对于 Linux Ubuntu Putty 用户请尝试以下操作:

sudo apt-get update
sudo apt-get install python-dev
Run Code Online (Sandbox Code Playgroud)

然后编译它

gcc -o check xyz.c -I/usr/include/python2.7/ -lpython2.7
Run Code Online (Sandbox Code Playgroud)

然后运行它

./check 
Run Code Online (Sandbox Code Playgroud)