是否可以在 C++ 中嵌入 python 库?

Is it possibile to embed python libraries in C++?

是否可以在 C++ 中使用 python 库,例如 selenium、django 等....?如果是,是否有任何文档可以很好地解释这一点,例如在 C++ 中完全嵌入 python 库,而不仅仅是一些 运行 脚本,如 PyRun_SimpleString() ???

您可以使用 Python.h,这是 python 的 C API。此处给出了有关如何执行此操作的简要说明:https://www.codeproject.com/Articles/820116/Embedding-Python-program-in-a-C-Cplusplus-code.

python C API 的文档可以在这里找到:https://docs.python.org/3/c-api/index.html.

不过,有一个建议:无论您尝试做什么,都可能已经有了现有的 C++ 库来完成。除非绝对必要,否则我建议不要使用 python 库。或者你可以坚持纯 python.

如果你想在 C++ 项目中混合使用 Python,一个简单的可能性是在你的项目中包含 Boost,并依赖 Boost.Python 库,它可以实现 Pyton 和 C++ 之间的互操作性(https://www.boost.org/doc/libs/1_78_0/libs/python/doc/html/index.html);这基本上是 Python C API 的包装器,使事情变得更容易,包含在 well-known C++ Boost 库中。

在你的情况下,你想在 C++ 中嵌入 Python,而 Boost 几乎可以在不调用 Python C/API: https://www.boost.org/doc/libs/1_78_0/libs/python/doc/html/tutorial/tutorial/embedding.html 的情况下做到这一点。 使用非常简单,您只需包含 boost/python.hpp,并将 Python 解释器嵌入到您的代码片段中以调用 Python 模块。

无需重新发明轮子,这里有一个 link 与您的主题相关的另一个 SO 问题,有一个很好的答案,解释了如何做: .

当然,您可能不想将 Boost 包含到您的项目中(例如,如果您不想费力地安装它)。