2

如何在 pybind11 中使用基本(“默认”/“内置”;不需要导入)python 方法?

列表、字典和其他一些确实具有内置兼容性,但我专门寻找的方法(打开)不包括通过导入。我知道解决它的一种方法是使用包装“open”的方法创建一个 python 文件,然后像调用任何导入的方法一样调用它,但如果可能的话,我更愿意直接在 C++ 中执行它(使用 pybind)否则半失败的目的。

任何帮助/建议将不胜感激。

4

1 回答 1

4

你错了。首先,内置名称可以从模块中导入builtins(在 Python 3 中):

py::object open = py::module::import("builtins").attr("open");

其次,open也存在于io模块中,因此您也可以使用与上述行等效的以下行:

py::object open = py::module::import("io").attr("open");

这适用于 Python 3,但最后一行也适用于 Python 2.7。

于 2018-04-27T21:00:57.630 回答