如何从 C++ 程序运行 python 脚本?

Posted

技术标签:

【中文标题】如何从 C++ 程序运行 python 脚本?【英文标题】:How do you run a python script from a C++ program? 【发布时间】:2016-05-23 20:26:14 【问题描述】:

我已经找到了一些我知道你需要包含 Python.h 并且你需要拥有的东西

Py_Initialize();
//code that runs the python script
Py_Finalize();

打开和关闭解释器,但中间部分让我迷路了。我能找到的关于这个主题的大部分信息都使用带有一些参数的 Py_SimpleString() 命令。我已经搜索了一段时间,但我找不到任何可以清楚地解释该命令正在做什么或如何准确使用它的文档。

我不一定需要 python 脚本直接将值传递给 C++ 程序。它正在写入一个文本文件,而 C++ 可以只解析文本文件以获取它需要的部分。我只需要让 .py 文件运行并执行其功能。

感谢任何帮助!

【问题讨论】:

【参考方案1】:

在 C++ 程序中运行 Python 脚本的最简单方法是通过 PyRun_SimpleString(),如 this web page 的示例所示:

#include <Python.h>

int main(int argc, char *argv[])

  Py_SetProgramName(argv[0]);  /* optional but recommended */
  Py_Initialize();
  PyRun_SimpleString("from time import time,ctime\n"
                     "print 'Today is',ctime(time())\n");
  Py_Finalize();
  return 0;

如果您想运行存储在 .py 文件中的脚本,而不是直接以字符串形式提供 Python 源文本,您可以调用 PyRun_SimpleFile() 而不是 PyRun_SimpleString()。

【讨论】:

您需要将 Python 库链接到您的应用程序才能使其工作。假设你有这个,你不需要在计算机上单独安装 Python,因为它将使用内置到你的应用程序的可执行文件中的 Python 解释器。 (不过,您需要将要导入的任何 .py 文件放在 Python 加载路径的文件夹中)【参考方案2】:

我找到了一些不错的资源(https://docs.python.org/2/c-api/intro.html?highlight=py_initialize,https://docs.python.org/2/c-api/init.html?highlight=py_initialize),你已经看过了吗?

【讨论】:

以上是关于如何从 C++ 程序运行 python 脚本?的主要内容,如果未能解决你的问题,请参考以下文章

从 c++ 代码运行 python 脚本并在 c++ 中使用 pythons 输出

从 C++ 停止嵌入式 Python 提示符

“C++ 应用程序可以在完成时发出 python 脚本信号”吗?

如何从 C++ 执行 Matlab 脚本

将python脚本添加到c ++项目

从 C++ 程序运行 python 程序?