【C++&Python】C++调用Python(二):Python脚本调用

【C++&Python】C++调用Python(二):Python脚本调用,第1张

【C++&Python】C++调用Python(二):Python脚本调用
系列文章目录

【C++&Python】C++调用Python(一):Hello World

【C++&Python】C++调用Python(二):Python脚本调用

目录

系列文章目录

前言

一、基本原理

二、准备工具

二、具体步骤

1.引入库

2.脚本运行

(1)更改目录

(2)运行脚本

三、完整示例

总结


前言

前一章我们讲述了如何利用VS2019开发工具,配置相应环境,在C++项目中调用Python完成Hello World!打印,但其实在使用Python过程中我们往往会利用脚本的方式对Python的工具包经行调用,那么在C++中我们同样可以完成这一过程。


一、基本原理

通过C++调用Python脚本的基本原理过程就是在C++项目中引入Python库,通过改变工作目录,使得Python库运行过程中指向脚本对应位置运行对应脚本即可。

二、准备工具

Python3.9;

Visual Studio 2019(VS 2019);

注:其他版本的Python以及Visual Studio步骤基本相似

二、具体步骤
1.引入库

在VS C++项目中引入Python库。

不清楚如何引入Python库的朋友们可参照系列第一篇博客:

【C++&Python】C++调用Python(一):Hello World


2.脚本运行

在基本原理我们提到过,想要在C++项目中运行Python脚本抽象来说就两步:

(1)引导C++程序找到脚本

(2)运行脚本

(1)更改目录

通过Python中的sys.path.append('path')命令更改目录,可以更改Python库的工作目录,以达到将C++程序指向Python脚本所在目录的目的。

具体C++代码如下:

//导入Python sys包
PyRun_SimpleString("import sys");
//更改Python工作路径为C:PythonPython39(即Python脚本.py文件所在路径)
PyRun_SimpleString("sys.path.append('C:\Python\Python39')");

注:通常来说默认Python库工作目录为VS项目的工程目录,如果将脚本直接放在工程目录下就可以跳过此步骤,但如果工程目录下已经有同名脚本则后续会优先执行工程目录下的脚本

(2)运行脚本

通过Python头文件提供的Pyimport_importModule()函数,可以很轻松的直接读取或者运行脚本。

具体C++代码如下:

//运行读取Python脚本test01.py
PyObject* pModule = Pyimport_importModule("test01");
三、完整示例

Python脚本放置在C:PythonPython39,代码为:

print('Hello World!')

C++主函数代码:

#include
#include

int main()
{
    Py_Initialize();//初始化Python
    PyRun_SimpleString("import sys");//导入sys包
	PyRun_SimpleString("sys.path.append('C:\Python\Python39')");//添加路径

	PyObject* pModule = Pyimport_importModule("test01");//运行脚本
    if (!pModule) 
	{
		std::cout << "[ERROR] Python get module failed." << std::endl;// 运行失败
		return 0;
	}
	std::cout << "[INFO] Python get module succeed." << std::endl;// 运行成功
    Py_Finalize(); //释放Python
    system("pause");//按任意键继续
	return 0;
}

运行结果:



总结

本文详细介绍了如何利用VS2019开发工具,在C++工程下调用Python,并完成了对Python脚本的运行。

ps:博主初来咋到,欢迎大家对不懂的评论留言提问^_^

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5679714.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-17
下一篇2022-12-17

发表评论

登录后才能评论

评论列表(0条)

    保存