最近开发了一款可视化软件平台,初次接触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.打包完成。