signed

QiShunwang

“诚信为本、客户至上”

打包发布qt+python软件

2021/6/3 13:22:49   来源:

最近开发了一款可视化软件平台,初次接触Qt,在这里简单记录一下软件(Qt+Python)的打包过程。

对于qt的依赖库,qt提供了windeployqt.exe来进行打包,具体用法如下:

1.首先创建一个空文件夹,将编译好的MyPlatform.exe拷贝到该目录下;

2.启动cmd,cd到该空文件夹路径,执行以下打包命令:

D:\Programs\Qt\Qt5.12.1\5.12.1\msvc2017_64\bin\windeployqt MyPlatform.exe

3.至此,qt的依赖库打包完成,但是 windeployqt.exe并不能解决其它库的依赖。

由于我的软件在C++中嵌入了python,因此,接下来继续对python的依赖进行打包:

0.首先,我尝试了pyinstaller打包方式,实际情况是它并不能很好的解决“C++嵌入python”的python依赖问题,而且它并不能很好的找全所有依赖库,比如可能会缺少numpy的依赖,可以通过以下方式解决该问题:

D:\Programs\Python\Scripts\pyinstaller cppInterface.py --hidden-import numpy

1.接下来讲解正确的打包方式,第一步,切换到python的安装目录,拷贝以下文件夹和dll到一个空的文件夹“Python37”:

2.将“Python37”文件夹拷贝到可执行程序路径下,并修改软件平台源码,在Py_Initialize前使用Py_SetPythonHome设置python的home路径:

Py_SetPythonHome((wchar_t *)(L"./Python37"));
Py_Initialize();
//TODO:
//...
Py_Finalize();

3.重新编译软件平台源码,拷贝exe文件和Python37文件夹,以及其它依赖库的DLL到安装路径;

4.拷贝Python37文件夹里的python37.dll到可执行程序目录;

5.打包完成。