问题标签 [pybind11]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
6200 浏览

class - 多种类型的 PyBind11 模板类

我想使用 PyBind11 来包装一个专门的数组类。但是,该数组有多种形式(每种普通旧数据类型一种)。代码如下所示:

我想到告诉 PyBind11 这些类的唯一方法是通过使用一个非常大的宏为每个 POD 复制上述内容。

有一个更好的方法吗?

0 投票
2 回答
8096 浏览

python - pybind11:如何将 c++ 和 python 代码打包成一个包?

我正在尝试使用 CMake 和 pybind 11 将现有的 Python 代码和新的 C++ 11 代码打包在一起。我想我缺少一些可以简单地添加到 CMake 脚本中的东西,但在任何地方都找不到:pybind11 示例只有 C++ 代码和没有Python,其他在线资源相当复杂而且不是最新的——所以我只是不知道如何将两种语言的函数打包在一起,并通过Python的import my_package下线使它们可用......作为一个例子,我已经从 pybind11 克隆了 cmake_example 并在其中添加了一个 mult 函数cmake_example/mult.py

我如何使它与下面的测试一起可见addsubtract通过下面的测试?

目前,此测试失败..

谢谢!

0 投票
1 回答
2335 浏览

c++ - 如何使用 PyBind 和 make 而不是 CMake 在 C++ 中嵌入 Python?

我正在尝试使用 PyBind 在 C++ 中嵌入一些 Python 代码。大多数文档都是关于使用 C++ 扩展 Python,但我对嵌入感兴趣:

http://pybind11.readthedocs.io/en/stable/advanced/embedding.html上有一个使用 cmake 的简单示例。但是对于我的项目,我必须扩展一个 makefile。

是否可以更改此示例

使用这个 c++ 文件

到带有makefile的版本?

0 投票
1 回答
3131 浏览

python - 在 C++ 中使用 pybind11 包装器时的段错误

我有一个具有以下结构的示例。

CMakeLists.txt

主文件


现在在运行时

为了让这个模块在这里正确加载,我缺少什么?我已经搜索了文档,特别是构建系统部分,但结果是空的。

在 C++ 的 pybind11 中使用其他包装器时,我似乎也是这种情况。

0 投票
0 回答
95 浏览

python - 使用带有 pbr 的自定义构建

我正在尝试将pbr用于具有使用 pybind11 的扩展模块的 python。有一个pybind11 cmake 示例 repo,展示了如何使用 cmake 从setup.py构建扩展模块。我的问题是:如何将此自定义扩展模块构建到基于 pbr 的 setup.py setup.cfg 中?特别是,如何使用 setup.cfg 中的自定义扩展类 CMakeBuild 和 CMakeExtension?

0 投票
1 回答
4561 浏览

c++11 - PyBind11 全局级枚举

PyBind11 文档讨论了如何使用enum here

显示的示例假定枚举嵌入在一个类中,如下所示:

我的情况不同。我有一个全局enum值,它的值用于改变几个函数的行为。

我试图像这样注册它:

编译成功并且模块在 Python 中加载,但我没有在模块名称中看到 ModeType。

我能做些什么?

0 投票
1 回答
147 浏览

python - 在 cpython 中创建 TZInfo 对象

我目前正在使用 cpython datetime api尝试为Howard Hinnant 的日期库zoned_time 对象编写 pybind11 绑定,为此我必须在 Howard Hinnant 的 TimeZone 和 cpython PyDateTime_TZInfo 之间执行双向转换。

cpython 中的 PyDateTime_CAPI 定义了许多创建 PyDateTime_* 对象的操作;但是,它只定义了 TZInfo 的类型,没有定义创建这些对象的方法。api的实现定义了一个非常基本的时区实现;但是,这不会通过 API 公开。最终,为了对时区对象具有适当的可操作性,需要对 TZInfo 接口进行一些 C++ 实现。我在这里看到的问题是 API 代码依赖于 call_tzinfo_method它正在调用假定在派生 python 类上实现的方法,而不是在接口上实现的方法。从我在这里可以看到,没有办法在 C++ 中实现 TZInfo 对象,这最终将导致无法正确绑定时区感知日期时间对象。有没有办法解决这个问题,或者在当前的 cpython 实现中这根本不可能?

0 投票
1 回答
2566 浏览

python - Pybind11 用于 C++ 代码,内部结构通过静态工厂方法创建

我有自己的 C++,我正在尝试使用 Pybind11 生成 python 绑定:

我有为MarkerDetector::Paramsstruct 生成绑定的问题,因为它是一个内部结构,使用工厂方法构造,以枚举作为参数:

有谁知道如何处理这个更高级的案例?

0 投票
2 回答
539 浏览

python - pytest 和 pybind11:无法导入 c++ 扩展

我使用 pybind11 将模块添加_cxx到现有的 python 库liba。在liba._cxx.func我编译 c++ 扩展并通过setup.py.

当我在 中运行测试时liba/tests/test__cxx.py,它抱怨它无法导入liba._cxx

如何解决这个问题?

0 投票
3 回答
260 浏览

python - 获取引用的 Eigen3 矩阵的所有权

如何通过引用将特征矩阵 A 传递给函数,然后窃取 A 的所有权?

我正在为 Python 编写一个 C++ 扩展,它接受两个std::vector<Eigen::Ref<Mat> >并返回一个std::vector<Mat>. 返回向量的每个元素可以是输入向量中引用的新矩阵或旧矩阵。

Eigen::Ref来自 pybind11 的示例在此处(pybind11 doc)提到了 C++ 和 Python 之间的传递引用。

我尝试修改一个示例(来自旧的错误报告)。但是源没有移动到目标。这是因为源矩阵最后不是空的。

测试:

结果: