当前位置: 首页 > 面试题库 >

使用cmake和pybind11构建示例应用程序时未找到Python.h

高森
2023-03-14
问题内容

我想用pybind11构建简单的应用程序,pybind已经通过cmake安装在我的Ubuntu系统中(并进行安装)。我使用这个简单的cmake文件:

cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(trt_cpp_loader )
find_package(pybind11 REQUIRED)
add_executable(trt_cpp_loader main.cpp)
set_property(TARGET trt_cpp_loader PROPERTY CXX_STANDARD 11)

这是main.cpp:

#include <iostream>
#include <pybind11/embed.h>
namespace py = pybind11;

using namespace std;
int main(){return 0;}

当我构建它时,我得到:

In file included from /usr/local/include/pybind11/pytypes.h:12:0,
                 from /usr/local/include/pybind11/cast.h:13,
                 from /usr/local/include/pybind11/attr.h:13,
                 from /usr/local/include/pybind11/pybind11.h:44,
                 from /usr/local/include/pybind11/embed.h:12,
                 from /home/stiv/lpr/trt_cpp_loader/main.cpp:2:
/usr/local/include/pybind11/detail/common.h:112:10: fatal error: Python.h: No such file or directory
 #include <Python.h>
          ^~~~~~~~~~
compilation terminated.

我该如何解决这个问题?(已经安装了python-dev和python3-dev,Python.h可用)


问题答案:

遵循Wenzel Jakob的回答,我想举一个例子,CMakeLists.txt用于编译本教程中提供的示例:

// example.cpp

#include <pybind11/pybind11.h>

int add(int i, int j) {
    return i + j;
}

PYBIND11_MODULE(example, m) {
    m.doc() = "pybind11 example plugin"; // optional module docstring

    m.def("add", &add, "A function which adds two numbers");
}

# example.py

import example

print(example.add(1, 2))

# CMakeLists.txt

cmake_minimum_required(VERSION 2.8.12)
project(example)

find_package(pybind11 REQUIRED)
pybind11_add_module(example example.cpp)

现在处于根源运行

cmake .
make

现在通过运行python代码

python3 example.py

PS
我还写了一些说明,用于编译/安装pybind11



 类似资料:
  • 我收到了一个用于为嵌入式linux设备构建c /c应用程序的SDK。这对我来说都是新的,所以我的一些术语可能是错误的。 我按照他们的指示和SDK安装在我的linux(ubuntu)系统在 /opt/.他们使用的编译器似乎是arm-poky-linux-gnueabi-gcc。SDK的一部分设置了一些环境变量,如用于编译C/C的$CC和CPP。环境变量运行类似arm-poky-linux-gnuea

  • 这是一个启动应用程序。它运行完美,但没有得到输出(它显示我的HTTP状态404错误在浏览器) 波姆。xml 启动类Main方法 控制器在主类后加载 网址:http://localhost:8080/hello输出

  • 我根据以下站点遵循了该过程:https://developer.vuforia.com/resources/dev-guide/step-3-compiling-running-vuforia-sample-app。 我试图通过cygwin构建ImageTargets共享库,但显示的消息是: 和

  • 我一直在工作一个100%的SwiftUI应用程序,并相当投入该项目。当在模拟器和设备上运行时,该项目编译和构建没有问题。然而,如果我试图编译项目,我会得到一堆错误,说明在整个项目中找不到某些类。 其中2个是CoreData自动生成的类。1是一个名为globals.swift的全局结构 还有谁在Xcode 12.4中遇到过这个问题吗?

  • 我想把我的Eclipse项目迁移到Android Studio。我以前使用minSdkVersion=8构建项目,但我想添加需要MinSDKVersion10的新功能。 我运行的是Android Studio1.1.0。导入Eclipse项目(主屏幕上的“Import project”)后,我转到“project Structure”窗口,选择“Flavors”选项卡,并为min sdk和targ

  • 问题内容: 我试过了。但是,由于我还很陌生,所以无法弄清问题。我已附上了几个屏幕截图,以查看我现在面临的问题。 问题答案: 缺少提供者并不重要,这仅意味着您没有任何提供者。 您有一个,但如果您将Jersey过滤器映射到上下文根(/),这是正确的说那里没有资源-根据屏幕截图,您只有一个资源,/emp从此开始,CRUD操作的子资源会更深路径。 编辑:第二眼,您在中。我认为这不应该基于您似乎试图将一个简