问题标签 [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.
python - 如何将 python 函数转换/转换为 std::function在 pybind11 中?
我正在使用 pybind11 为我的 c++ 项目实现绑定。所以,我的问题基本上是如何在解释器中定义一个 python 函数并从 C++ 代码中调用它。C++ 接口使用指针 (double*) 传递数据,我不知道如何在解释器中编写函数以及如何将其转换为 std::function 以执行评估:
拜托,有人可以给我一些提示吗?
python - 错误:不兼容的函数参数
我pybind11
用来访问一些我在 python 中用 C++ 编写的函数。我希望将初始化的结构实例返回给 python(从类成员函数),以便我可以访问 python 中的实例值。我提供了我的源文件的简化版本。可以使用以下内容重现错误。这是 C++ 包装器
这是类头的一部分sum.h
这是类定义 sum.cpp
结构定义:mesh.h
这就是我在 python 中调用它的方式。
之后我得到错误:get_instance():不兼容的函数参数。支持以下参数类型: 1. (arg0: GetSum) -> A
有人可以帮我找出我可能出错的地方吗?
谢谢!
python - 使用 pybind11 将 c++ 函数添加到现有的 python 模块
如何使用 pybind11 创建 python 子模块?
我克隆了 python 示例(https://github.com/pybind/python_example)并对其进行了修改。下面是目录树。
setup.py 有以下几行:
以下内容不起作用,因为它不能使用带点的名称。
以下也不起作用。
这也不起作用:
如何使这项工作?
python - 使 C++ 模块成为 Python 包的一部分
我有以下目录布局
我目前将 module1 导入为
和模块2作为
但我希望能够使用前一种语法。
module2 由 pybind11 以如下方式创建:
python - 在 pybind11 中混合 Python 和 C++ 源文件
我正在使用 PyBind11 制作 Python 项目。
我的目录结构如下所示:
我的 C++ 代码如下所示:
我的setup.py
样子是这样的:
现在,如果我跑
一切都编译。
但这是奇怪的部分,稍后,我可以运行import cppmodule
但不能import bob
。或者,与其他摆弄,有时我可以同时运行。
我还没有想出怎么做,但我想做的是将 C++ 代码bob
以相同的方式并入模块func1
中func2
,以便我可以输入bob.myfunc()
Python。
我怎样才能做到这一点?
python - 使用 Python 虚拟环境时包含和库在哪里?
我使用 Python 虚拟环境。基本上,它工作得很好,但是我在编译一些 Python 绑定时遇到了问题,即使用 libIGL 和 pybind11。
CMake 具有以下与 Python 相关的变量:
它似乎可以正确检测到先前激活的虚拟环境的python3.5可执行文件,但它发现包含和库的一些错误的2.7路径。
所以我想手动将这些路径设置到我的虚拟环境中。我浏览了虚拟环境的目录结构,我想我找到了包含在/users/me/libs/pyvenv/include/python3.5m
. 但是我找不到libpython*
,我的虚拟环境中根本没有*.so
文件。那么在这种情况下我应该使用哪个库?
pybind11 - Pybind11:make_tuple() 是否拥有包装的指针?
假设我有一个这样的函数,我将其包装在 Pybind11 中:
指针的所有权会发生什么?是否可以告诉 pybind11::tuple 拥有指针并对它们调用 delete ?写这个的正确方法是什么?
python - 使用 Pybind11 包装 STL 容器返回类型
我想包装一个 C++ 函数(使用 Pybind11),它返回一个 STL 容器,该容器本身包装在一个智能指针中。一个例子如下所示。该函数已重载,因此我必须指定签名。
该模块将编译,但当我尝试在 Python 中使用该函数时会出错:
TypeError:无法将函数返回值转换为 Python 类型!
我确定我只是为 Pybind11 设置了错误。谢谢你的帮助!
编辑
问题肯定出在我尝试绑定std::Array
数据类型的过程中。我最终修改了要使用的代码std::Vector
,然后 Pybind11 没有问题。有关如何绑定std::Array
容器的信息,请参见下面的 AS Mackey 的回答。
python - pybind11 包装现有代码
我正在尝试使用 pybind11 包装一个 c++ 库,以便可以将它与 Python 3.x 一起使用。
我尝试使用 swig 包装代码,但遇到了一个问题,即 SWIG 会生成 cxx 文件,但不会读取我引用的标头,因此建议我使用 pybind11,因为它比 swig 更好(这是我的意见知道),但我无法找到有关如何引用/构建项目的资源。
我的环境是:
- 视窗 10 x64
- Anacondas 使用 Python 3.6 构建 4.4.0
- Visual Studios 2015 Professional(已安装 C++)
当我为 Swig 创建接口文件时,我可以做一些简单的事情,比如:
```
```
然后在 swig 构建中,我可以引用-I
.h 文件的位置。
我如何在 pybind11 中做这样的事情?就这么简单吗?
当您拥有 .cpp 文件时,pybind11 的文档始终显示构建包装器。我可以以可以用 swig 构建包装器的方式使用 pybind11 吗?如果是这样,您如何设置文件?
有人可以指出一个仅从现有 c++ 代码生成 python 包装器的项目吗?
谢谢
python - 使用 pybind11 将抽象类作为参数作为参数传递
这是我的问题:
我有两节课
和第二个类,它在其构造函数中将该类作为参数
对于 ai 类,可以使用文档中描述的蹦床类。如果我尝试为第二个类创建绑定,则会收到以下编译错误:
使用以下绑定:
我怎样才能传递这样的论点?
谢谢!