QT 打包(含python环境)

第一步: pro添加库文件

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/./pythonEnv -lpython311
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/./pythonEnv -lpython311d

INCLUDEPATH += $$PWD/./pythonEnv/include

第二步: 准备python环境

编写好python脚本并确保代码可以跑通后(注: 最好pychar打开检查一遍,有缩进错误的话一目了然,否则光靠文本编辑软件是看不出来的,并且缩进存在问题时调用脚本无任何报错,不出结果),使用pyinstaller 打包脚本(个人建议用虚拟环境打包,需要的话看第二步末尾),得到如下图文件,该目录是我改过名称的,为了对应pro文件的路径目录名

打开python目录,复制一下圈起来的目录到QT打包准备的目录中,目录命名随意,libs目录只要圈起来的两个文件就行了,python311d.lib 是 python311.lib 文件复制后改名加了个d的,也是为了对应pro文件的配置

此时pythonEnv目录的文件是这样的,

虚拟环境:

pip install virtualenv

virtualenv -m 自定义的虚拟环境目录名

cmd 命令 cd 进入前面自定义的目录->script目录  执行  start  activate.bat 命令进入虚拟环境

安装库、打包这些就不说了,虚拟环境可以挑脚本需要的库安装,比较纯净,生成的文件比较精简些

第三步: 指定脚本目录,如下图,设置脚本目录,圈起来的是重要的代码,scriptFolder 即

G:\build-SimpleTool-Desktop_Qt_5_12_12_MinGW_64_bit-Release\release  路径,把 release 可行性文件、python环境目录和脚本搬到QT打包准备的目录之后,scriptFolder的路径也就是当前目录路径,因为可执行文件在这,除非特殊需要动态设置脚本目录之外,按下图这么写就好了,脚本在该目录下任何位置都可以找得到

注意注意注意: pythonhome 的设置路径除了python原解释器路径,其他路径一加进去运行脚本直接闪退,这个方法不需要指定pythonhome,就不需要加了

第四步: 打包

把 G:\build-SimpleTool-Desktop_Qt_5_12_12_MinGW_64_bit-Release\release 路径下的exe程序可执行文件、py脚本 和 pythonEnv 环境放同一个目录里面

执行cmd命令 windeployqt  SimpleTool.exe 这里我的windeployqt已经加了环境变量了

然后运行可执行文件,可以看到,运行成功了,添加文件的代码里面我调用了脚本的

如果需要打包为单个可执行文件,比较简单,图我都放上来吧,打开 Enigma Virtual Box   Software Protection, Software Licensing, Software Virtualization (enigmaprotector.com)icon-default.png?t=N7T8https://enigmaprotector.com/en/downloads.html

(一)

(二)

(三) 勾上

(四)检查递归文件夹,看看是否有多余的文件,有就移除掉,比如可执行文件,添加主程序的时候已经包含了,所以移除掉

(五)封包

测试ok,没什么问题,__pycache__文件夹生成说明py代码已经跑了,上图大小一百多兆是因为我没勾上压缩选项~,勾选压缩选项后如下图

压缩后大小43兆

相比较于未压缩前的100M,挺可观了, 另外如果程序在另一个程序上报错找不到QtCore.dll之乐的,把QT目录下 5.12.12\mingw73_64\bin 的三个文件   libgcc_s_seh-1.dll、libstdc++-6.dll、libwinpthread-1.dll 放到打包目录下再试试看,打包成单个可执行文件的话把这三个文件也包含进来

还有一种方法也有效,也是目前资料最多的一种,把整个python搬过来,pro文件指定python目录,代码指定pythonhome

pythonhome指向python文件夹目录,pro文件里include和libs路径在python文件夹里,指定就行了

但是这个方法要带着几百兆的python目录

  • 21
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值