C++如何调用Python脚本?(代码示例)
发布时间:2025-12-13 07:17
发布者:网络
浏览次数:C++调用Python脚本需嵌入Python解释器,核心步骤为初始化、执行、获取变量、清理;须链接Python库、注意路径与异常处理,多线程需GIL管理,轻量场景可选system调用。

在C++中调用Python脚本,核心是使用Python官方提供的C API(即Python.h),通过嵌入Python解释器来执行脚本。关键步骤包括:初始化解释器、加载脚本、运行代码、处理返回值、最后清理资源。下面给出一个简洁、可运行的示例,并说明注意事项。
准备工作:链接Python库并包含头文件
确保你的编译环境已安装Python开发包(如Ubuntu下装python3-dev,Windows下需Python对应版本的libs和include目录)。编译时要链接Python库,例如:
g++ main.cpp -o main `python3-config --includes --ldflags`
基础调用:执行一个简单Python脚本文件
假设你有一个hello.py:
print("Hello from Python!")
result = 42 + 10
对应的C++代码如下:
#include
#include iostream>
int main() {
Py_Initialize(); // 初始化Python解释器
// 执行Python脚本文件
int ret = PyRun_SimpleString("exec(open('hello.py').read())");
if (ret == 0) {
std::cout } else {
std::cout }
Py_Finalize(); // 清理资源
return 0;
}
进阶用法:获取Python脚本中的变量值
如果想从C++里读取Python脚本里定义的变量(比如上面的result),需要用Python C API操作全局命名空间:
《PHP设计模式指南》中文版
《PHP设计模式》首先介绍了设计模式,讲述了设计模式的使用及重要性,并且详细说明了应用设计模式的场合。接下来,本书通过代码示例介绍了许多设计模式。最后,本书通过全面深入的案例分析说明了如何使用设计模式来计划新的应用程序,如何采用PHP语言编写这些模式,以及如何使用书中介绍的设计模式修正和重构已有的代码块。作者采用专业的、便于使用的格式来介绍相关的概念,自学成才的编程人员与经过更多正规培训的编程人员
341
查看详情
#include
#include
int main() {
Py_Initialize();
// 执行脚本
PyObject* pModule = PyImport_AddModule("__main__");
PyObject* pDict = PyModule_GetDict(pModule);
PyRun_String("exec(open('hello.py').read())", Py_file_input, pDict, pDict);
// 获取变量 result
PyObject* pResult = PyDict_GetItemString(pDict, "result");
if (pResult && PyLong_Check(pResult)) {
long value = PyLong_AsLong(pResult);
std::cout }
Py_Finalize();
return 0;
}
常见问题与建议
路径问题:Python脚本路径是相对于C++程序运行时的当前工作目录,不是源码目录。推荐用绝对路径或提前设置PySys_SetArgv和sys.path。
异常处理:PyRun_String出错时不会自动打印异常,可用PyErr_Print()捕获并输出错误信息。
线程安全:多线程调用需调用PyEval_InitThreads()(Python 3.7+ 已默认初始化)、加GIL锁(PyGILState_Ensure() / PyGILState_Release())。
替代方案:若只是偶尔调用脚本且不追求性能,也可用std::system("python3 script.py")启动子进程——更简单,但无法共享变量、无实时交互。
基本上就这些。嵌入Python解释器功能强大,但也带来依赖和生命周期管理负担。小项目用子进程更轻量;需要深度交互时再上C API。
以上就是C++如何调用Python脚本?(代码示例)的详细内容,更多请关注其它相关文章!
# python
# go
# windows
# ubuntu
# ai
# c++
# ios
# win
# stream
# 常见问题
# python脚本
# 多线程
# 本书
# 说明了
# 如何使用
# 进阶
# 自学成才
# 你有
# 相关文章
# 中文网
# 但也
# 萍乡抖音seo排名
# 网站建设学什么语言
# 工业园区网络推广网站
# 知识产权网站建设
# 唐山网站建设靠谱吗
# 商家如何用抖音营销推广
# 阳泉关键词排名包括什么
# 肇庆公司做网站建设
# 可信的泉州seo机构
# 天门网站建设预案





hon库、注意路径与异常处理,多线程需GIL管理,轻量场景可选system调用。