将 Python 嵌入到C++应用程序中,如果是否安装了 python(在 Windows 上)

Embed Python in C++ app regadless if python is installed or not (on windows)

本文关键字:python 安装 Windows 是否 如果 Python C++ 应用程序      更新时间:2023-10-16

我有一个运行用户脚本的应用程序,使用 python 网站上的示例,我可以嵌入 python 3.5

问题不在于嵌入代码,而在于用户是否/或安装了哪个版本的Python。

#include <Python.h>
int
main(int argc, char *argv[])
{
  Py_SetProgramName(argv[0]);  /* optional but recommended */
  Py_Initialize();
  PyRun_SimpleString("from time import time,ctimen"
                     "print 'Today is',ctime(time())n");
  Py_Finalize();
  return 0;
}

这假设用户安装了 Python 3.5,如果他们安装了其他内容,嵌入式脚本可能无法正常工作。

或者更糟糕的是,应用程序本身将无法加载。

如果他们根本没有安装Python,那么对Py_Initialize()的调用只会使应用程序崩溃。

所以我有几个问题,我如何在我的应用程序中包含 Python,无论他们是否安装了 python?

或者,我如何测试他们安装了哪个版本的 Python,这样我就不会尝试调用 Py_Initialize(); 如果他们没有安装它或他们没有正确的版本

。我如何测试他们安装了什么版本的 Python...

请参阅Py_GetVersion。

。如何在我的应用程序中包含 Python,无论他们是否安装了 Python?

对于完整的嵌入,有一个指南:在Windows上静态嵌入Python。通常,您只需将Python DLL +标准库文件夹复制到应用程序文件夹中,并在初始化之前更改搜索路径(请参阅Py_SetPath和Py_SetPythonHome)。