C++ QT调用python脚本并将软件打包发布

         对我来说主要就是打包的问题比较难解决,弄了一个下午都没解决,不知道是minconda的问题,还是Qt更新的原因,网上的很多解决方法都不行,经过排查,发现是少导入了一个文件夹。

        怎么调用python脚本就不详细说了,网上有很多教程,主要说一下打包发布的流程。

打包发布流程:

1.制作python环境文件夹,我软件开发使用的是python3.8。所以新建一个文件夹,命名为 “Python38”。

2.我用的是miniconda,我的miniconda环境目录如下:

C++ QT调用python脚本并将软件打包发布_第1张图片

3.最关键的一步,将minconda环境文件夹内的DLLs、include、Lib、libs、tcl文件夹和所有.Dll文件拷贝到第一步新建的Python38文件夹内,复制好后如下图(网上的解决方法都没有复制tcl文件夹,所以我试了好多方法都运行不了):

 C++ QT调用python脚本并将软件打包发布_第2张图片

4.  .在C++代码中使用Py_SetPythonHome 函数指定python库解释器的路径,然后再初始化python编译器,之后就可以调用自己的python代码(网上有很多教程)。

Py_SetPythonHome((wchar_t *)(L"./python38"));//指定python库解释器的路径
Py_Initialize();  //初始化python解释器,告诉编译器要用的python编译器

5.然后创建一个空文件夹作为打包文件夹,将代码生成的QT可执行程序拷贝到打包文件夹下,再使用windeployqt xxx.exe来打包(我用的是visual studio所以用MSVC)

C++ QT调用python脚本并将软件打包发布_第3张图片C++ QT调用python脚本并将软件打包发布_第4张图片

6.最后将你的python3.dll、python38.dll、刚刚制作的Python38文件夹和你要调用的.py文件复制到刚刚的打包文件夹下,最终打包好的文件夹如下:

 ​​​​C++ QT调用python脚本并将软件打包发布_第5张图片

 经检验,在其他没有配置环境的计算机上也可以运行此程序。

你可能感兴趣的:(c++,开发语言,qt,python)