如何在未安装Python的系统上执行嵌入C++代码的Python代码

4 投票
1 回答
1842 浏览
提问于 2025-04-18 05:26

我正在尝试用C++创建一个简单的游戏,并在其中嵌入Python代码。我使用了Python/C API来实现这个功能。

我有两个目标想要实现:

1) 应用程序应该能够在没有安装Python的电脑上运行。

2) 应用程序应该是一个独立的可执行文件(.exe)。

举个例子,下面这段简单的代码只有在系统上已经安装了Python的情况下才能工作:

#include <Python.h>
#include <conio.h>
#include <stdio.h>

int main()
{
char pySearchPath[] = "Python27"; 
Py_SetPythonHome(pySearchPath); 

Py_Initialize();
PyRun_SimpleString("print 'Hello World'");
PyRun_SimpleString("for i in range(5):\n"
    "\tprint i,\n");
Py_Finalize();
getch();
return 0;
}

Python必须安装在电脑上,或者这些文件应该放在可执行文件的目录下:

        python27.dll
        Python27\
            DLLs\ (contents of DLLs folder)
            Lib\ (contents of Lib folder)

问题:我该如何将这些文件包含/添加/绑定到我的.exe中,以便我的应用程序可以在没有安装Python的系统上运行?我希望能有一个独立的可执行文件。这可能吗?如果可以的话,请给我一些实现的提示。我已经花了很多时间在网上搜索,但不幸的是没有找到有用的信息。

可能还有其他方法可以解决这个问题,但我不太确定。例如,以下方法是否可行?

Python代码 ----转化----> 字节码 -----> 本地代码 -------> 导入到程序中

更新:我用Cython生成了.pyd文件(.dll)。我该如何从中生成.h文件,或者在我的应用中调用一些函数(如果可能的话)?

谢谢。

1 个回答

1

是的,你可以在C++中嵌入Python代码。

谷歌给我提供了两个链接,我觉得对你会有帮助。我不确定你是否已经知道这些链接,因为你在提问时没有提到你做过的研究。

http://www.codeproject.com/Articles/11805/Embedding-Python-in-C-C-Part-I 这个链接有关于这个主题的两部分教程。

http://realmike.org/blog/2012/07/05/supercharging-c-code-with-embedded-python/ 这个链接也在讨论同样的话题。

通常来说,在回答中粘贴外部链接是不太推荐的。但很遗憾,你的问题答案太长了,我不得不在这里提供这些链接。对此我感到抱歉。为了保险起见,你应该从这些链接下载整个教程,以免将来如果教程下线了你会后悔!

撰写回答