pybind11 cmake示例找不到main函数

2024-04-29 00:58:44 发布

您现在位置:Python中文网/ 问答频道 /正文

git clonedpybind11's cmake exmaple。然后我用pip install ./cmake_example构建了它。我的python文件包含以下内容:

import cmake_example
print(cmake_example.add(1, 2))

这个很好用。现在我想使用pybind11的解释器。我根据docs中的说明更改了CMakeLists.txt。以下是我现在的情况:

主.cpp

^{pr2}$

CMakeLists.txt文件

cmake_minimum_required(VERSION 2.8.12)
project(cmake_example)

add_subdirectory(pybind11)
add_executable(cmake_example src/main.cpp)
target_link_libraries(cmake_example PRIVATE pybind11::embed)

示例.py

import cmake_example
cmake_example.main()

当我运行上面的python文件时,我得到以下错误:

Traceback (most recent call last): File "example.py", line 2, in cmake_example.main() AttributeError: module 'cmake_example' has no attribute 'main'

我做错什么了?在


Tags: pip文件pyimportgittxtcmakeadd
1条回答
网友
1楼 · 发布于 2024-04-29 00:58:44

我觉得你把两种不同的方法混在一起了。在

嵌入是指将python解释器嵌入到现有的可执行文件中。你所指的文件使它(或试图)很清楚。在

这意味着你应该有一个C/C++可执行文件,你可以从它执行Python代码(在一个文件里面或者作为一个字符串)。在

现在,这是一种方式,看看你的构建目录,你会发现一个cmake_示例二进制文件。运行它,你就会看到指纹。您不能从标准的python解释器中直接导入这个构建的模块,而是可以在从自定义可执行文件(本例中为cmake_)调用的文件中使用它。在

你也可以跑步示例.py更改代码如下:

int main()
{
    py::scoped_interpreter guard{};

    py::eval_file("example.py");
}

相关问题 更多 >