gpt4 book ai didi

c++ - 使用 Py++ 生成的代码作为 Python 扩展

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:06:17 25 4
gpt4 key购买 nike

我需要包装现有的 C++ 库以便在 Python 中使用。阅读完 this answer on choosing an appropriate method to wrap C++ for use in Python 后,我决定使用 Py++。

我使用教程文件遍历了 tutorial for Py++ ,并在 generated.cpp 中得到了预期的输出,但我还没有想出如何才能实际使用生成的代码作为扩展,我可以在 Python 中导入。我确定我现在必须编译代码,但是用什么?我应该使用 bjam 吗?

最佳答案

Py++ 为您生成与 boost::python 一起使用的语法,以在您的应用程序中生成 python 入口点。假设 Py++ 一切顺利,您需要下载 Boost 框架,并将 boost 包含目录和 boost::python 库添加到您的项目,然后使用 Py++ 生成的 cpp 进行编译。

您可以为您的项目使用任何您想要的构建系统,但 boost 是使用 bjam 构建的。您需要选择是要静态库还是动态 boost python 库,然后按照构建 boost 的说明进行操作 here .

如果在 Windows 上,您需要将构建库的扩展名从 .dll 更改为 .pyd。是的,它需要是一个库项目,这不适用于可执行文件。

然后,将 pyd 放在您机器上的 python 可以找到它的地方,然后进入 python 并执行 import [Your-library-name],希望一切正常。

最后一点,在这个宏的generated.cpp中给出的名字:

BOOST_PYTHON_MODULE( -name- )

需要是您的项目的确切名称,否则 python 会报错。

不到一个月前我才经历过这一切,所以我知道其中的困惑。

为了使我的 python 扩展在构建库和测试时非常易于使用,我做了一件事,就是在我的构建环境中自己构建 boost::python 和 python。这样 pyd 就在我想要的地方结束,用户不需要安装 python 来运行我的扩展。不过,这对于您正在做的事情来说可能有点矫枉过正。

编辑:如果你想让你的扩展在机器上轻松安装和编译,请查看 python 的 setuptools .只需几行简单的代码,你就可以让 python 为你编译和安装你的包。不过,它的一个缺点是它与我们这些喜欢在 Visual Studio 中开发的人不兼容。

关于c++ - 使用 Py++ 生成的代码作为 Python 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2169948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com