使用 C++ 项目编译 python 脚本

Posted

技术标签:

【中文标题】使用 C++ 项目编译 python 脚本【英文标题】:Compile python scripts with C++ project 【发布时间】:2016-12-20 19:18:58 【问题描述】:

我有一个 C++ 项目,它在每个 python 脚本中调用相同的函数。但是每个脚本都做了非常不同的事情,需要访问 C++ 项目的内部类。

所以我需要一个 python 包装器,所以我将一个 C++ 对象传递给 python 脚本,我还需要一种方法来从 C++ 项目中运行 python 脚本的函数。

根据我对 Cython 和 Shed Skin 的理解,它们是将 C++ 类转换为 python 类的实用程序,但不一定在语言之间来回共享运行时对象。

我能做什么?

【问题讨论】:

这是一个非常广泛的问题,但是您可以查看 Boost for Python。 假设我有一个用 C++ 编写的连接数据库的程序。我希望这个程序执行 5 个 python 脚本。这些 python 脚本应该调用程序中的函数来访问特定的运行时数据并将一些值返回给程序。 【参考方案1】:

感谢 Maverick 提出的问题。 Cython 不是在 python 中使用 C++ 类的一种方式。Cython 只是具有 c 数据类型的 python。意味着您可以在 python 程序中使用 c 数据类型,从而使您的 python 代码执行得更快。您还可以在python 使用 cython。 现在解决问题中的问题,您可以使用 boost 库来完成您的任务。在 boost 中,您只需要编写一个包装器即可在 python 中使用您的 c++ 对象,反之亦然。您只需将其编译为一个共享库即可可以通过 jam、cython 等工具完成。我不会详细介绍您将如何做,因为您可以找到许多相同的教程。

【讨论】:

这不是真的。 Cython is a way of using C++ classes in Python.

以上是关于使用 C++ 项目编译 python 脚本的主要内容,如果未能解决你的问题,请参考以下文章

将 Python 脚本作为可执行文件的最佳方法?

在 C++ 中嵌入 Cython

编译python代码并将其链接到C++程序?

使用 cx_Freeze 执行的 Python 脚本,exe 啥也不做

使用在 windows shell 下运行的 Python 解释器编译 C++ 代码

在 CMake 中构建时运行 python 脚本,不需要依赖项