QPT Versions Save

[内测中]QPT - 致力于让开源项目更好通往互联网世界的Python to EXE工具(Python打包)。

ReleaseNote

5 months ago

这一年没有更新,原因挺多的,比较重要的是在某大厂的工作内容发生了变动,做了一阵文心大模型,个人业余的精力也不是很多了。
今年下半年去了某汽车社团,业余时间恢复了一些,所以近期进行了很多更新,具体更新内容如下:

新增内容

  1. 删除挂载在AI Studio上的所有节点

(人离开百度了,所以也没人罩了),将所有环境镜像托管至Pypi。

  1. 优化QPT的执行逻辑:

前期有开发者说QPT在多线程情况下会运行不起来(实际上是if __name__ = "main"理解上不太一样 https://github.com/QPT-Family/QPT/issues/23 ),所以QPT在执行py主程序文件时会再起一个进程,这样也导致了反应速度变慢,而且不能支持input(https://github.com/QPT-Family/QPT/issues/29 ),也算是走了个歪路吧,做了个input的监视代码,使得更加臃肿。在做优化时候,碰巧去上海出差,用公司电脑写了一段关于py文件加密的代码,发现有个巧妙办法能避开这个问题(Hook),可以做到不在待打包的py文件头部加warpper也能实现(可能有开发者会发现,打包后的文件的首行是import qpt的warpper),这样观感会更加好,以后加上git支持也会很丝滑。

  1. 增加将文件拖动至EXE时的支持https://github.com/QPT-Family/QPT/issues/72
  2. 支持中文路径下安装OpenCV等可能对中文路径敏感的Python库

虽然可以安装了,但实测OpenCV还是读取不了中文目录下的文件,所以QPT还会对目录为中文的用户给予警告,但不再强制关闭程序。

  1. 支持Python3.10、3.11、3.12.0

没想到一年Python更新了俩大版本。

  1. 增加自定义Icon的支持

国内这块资料真的少,不想再加个外部工具来修改Icon。

  1. Tkinter为通过拆解二进制Python包进行支持

Embedding的Python包更有性价比,环境变量也不会出太大乱子,也不会和Conda冲突了。

  1. 默认终端为utf-8
  2. 默认多进程使用Powershell而不是cmd
  3. 制作QPT-SDK便于管理各种附加环境
  4. 解决了可能存在找不到pywin32的问题
  5. 更换QPT默认图标

欢迎投稿Logo,我承认旧版本的“Q”型图标是借鉴Photoshop 2020的图标,甚至颜色上也没差,但就是会被人说丑,这次更新了一下。

  1. 支持打包编译后的程序

可有效降低首次初始化的时间,但代价是兼容性可能会出现Pyinstaller中也会出现的错误,而且打包后体积会很大。

不兼容更新

  1. 取消对Python3.7的支持

考虑到Python官方也不更新了,我也不更了吧,开摆!(实际上3.7在os中一些API在后续版本中更新较大,战略性放弃适配)

  1. 不再对Windows7、Windows8、Windows10 1608进行测试,仅对Windows10 1809、Windows11、Windows11 Beta进行测试

测试真的是个累活,怪不得大厂测试的薪酬还不低,比我这种运营的薪资还高不少呢!

下一步动作 - 完成其中的部分就会发布

  • 支持Conda版本的CUDA
  • 简单加密
  • OneFile
  • 重构Module管理器

V1.0b4_2

1 year ago
  1. 对Anaconda打包进行兼容性支持(可能是他们那边写了bug吧,部分egg的包本身是需要有包管理信息的,但最后没了)
  2. 增加QPT缓存目录的环境变量控制(有人说自己C盘多了5G,虽然这个数量我不太想承认,因为pip比QPT占比更高,最重要的是QPT的缓存目录是会随系统自动清除的,不是很想被人控制)
  3. 修复NoAVX下可能存在双等号的情况(自己写的Bug哈哈哈)

特别感谢

@SOVLOOKUP https://github.com/SOVLOOKUP 对QPT做出百行代码支持,增加pdm包管理器的适配 https://github.com/QPT-Family/QPT/pull/74

V1.0b3

1 year ago

好久没写更新说明了,自上次写更新说明以来,一共更新了不低于20个版本,内容过多,这次更新说明就只写一些目前QPT能做到的事情吧。

  1. 允许用户自定义图标。这个方案现在还是临时的,强制修改了一波PE,以至于勉强有个图标而已,实际上懂PE的人看起来就觉得这个方案很离谱。
  2. 增加对PaddleOCR、PaddleX这样的深度学习组件支持,之前不可避免的是lap这样N年不更新的包,但这次也给兼容了。
  3. 杂七杂八的兼容性问题,花的时间很多,但好在现在也能用了好多,至少没人大半夜at我说xxx又不行了。

V1.0b1

2 years ago

常规迭代

  1. 增加TK组件支持。当前版本中使用了完整Python包,LZMA标准64-64压缩后体积相较嵌入式版本增加10M左右,但提供了TK等非高频Python内置库的支持,同样pip也是满血状态。
  2. 增加CUDA版本选择。当Requirements文件中paddlapaddle-gpu后无任何postxxx版本号时,默认不进行搜索,而且提示用户输入想要安装的CUDA版本。需要注意的是,该版本中仍不提供已安装的本地CUDA列表信息,此处可能需要多尝试几次才会熟悉。使用说明详见增加CUDA模块 - 无需用户手动安装CUDA也可使用GPU加速
  3. 增加系统漏洞检测机制。在盗版/早期的Win7系统中,向用户提供的安装镜像可能不带有重要的运行库修补补丁,然而没有这些补丁会影响到Python的使用,在该版本中验性增加了检测机制,引导用户在遇到该问题时安装杀毒软件并修复系统漏洞。
  4. 增加对临时目录运行检测。考虑到部分用户可能在使用打包后的软件时会直接在压缩软件里运行,这样可能会引起部分Python依赖库安装失败的情况,例如日常内鬼的OpenCV。在该版本中会向用户弹出警告框,以此劝他解压一下吧~
  5. 修改了Release文案。目的很简单,这次明确提示了这个警告框只会在自己的系统中运行!
  6. 增加Logging统计模块。由于打包过程中可能会有很多的输出信息,若遇到了报错也可能会被忽略,在该版本中我们增加了统计模块,若打包中遇到了报错则会在打包尾声时告知开发者有了什么样的报错信息,并需要开发者进行确认。
  7. copytree增加乞丐版进度条表示,这样就能清楚的认识到,不是卡了,真的不是卡了,是他在复制文件!
  8. SubModule对opt目录下的op文件加判断。避免部分用户的“有损”压缩软件最后多造出了几个文件,然而这些文件会被QPT误以为是Op文件。
  9. 增加在打包后默认弹出资源管理器的功能。作为一个懒人,实在是不想手动参加此电脑->某盘->某文件夹->...->打包后的那个文件夹这样频繁的找目录环节,该版本直接弹出,解决问题。
  10. 加个全局安装状态。还在发愁用户在安装一半就关掉对话框吗?他可能以为软件卡了,抱着试试看的态度关掉了对话框,然后重新打卡时确又发现不对劲,它怎么没救了!救命啊!然后就找到了你,你也只能告诉他,重新解压!要删除之前的!要多等他一会儿!在这个版本中,大概率不用这样的操作了,因为如果第一次没有运行成功,后续仍会进行安装,直到他安装成功为止。

Fix Bugs

  1. 对用户名为空格的情况进行判断,避免临时文件释放至带有空格的用户名路径下
  2. 对Terminal也设置环境变量,这样就能防止因用户本地安装了Conda家族产品而导致的“找不到入口”这样人畜无害但又精神污染的警告框。
  3. 对BatchInstall模块速度进行优化,并不会像之前那样为了稳定而把Python包重新安装,毕竟现在Pip是满血的不是。
  4. 对copytree增加freeze,避免打包了被打包的那个文件,然后反复套娃最终导致硬盘被噎住的可怜表情。

V1.0a9

2 years ago

V1.0a9 - 2021.7.12

重要更新

  1. 增加PaddlePaddle的CUDA支持,CUDA支持方案为在打包时搜索开发者CUDA安装情况,抽取CUDA驱动至打包后的资源文件列表中,最后进行兼容性适配。该方案为QPT内测QQ群中赞同数量最高的方案。
  2. 增加PaddlePaddle的增加自动的NoAVX的适配,10年前的老年台式机或许也可以跑深度学习啦~实测PaddleOCR也可以在这类旧平台上跑出1.5~4s的推理速度。
  3. 增加了多个Debug小工具:快速进入Debug的Python环境、QPT环境以及收集Debug信息和打印当前pip list共4个小工具。
  4. 增加PIPTools的强制模式,提升QPT下的pip的兼容性,再也不担心pip会认为0.18.0小于0.2.0啦~
  5. 在用户使用时加入UA获取,进一步保障安装顺利。
  6. 修复可能来自已经安装的Python冲突。
  7. 修复可能来自已经安装的Conda冲突。
  8. 增加跨版本编译的功能,暂时未开放跨版本模式。
  9. SubModule增加ExtModule支持,允许SubModule产出新的ExtModule。

Fix Bug

  1. 修复打包路径判断Bug,现在允许在被打包的源码文件夹中保存打包后的文件。
  2. 修复在用户使用时仍会弹出的Release警告窗,现在只会对开发者进行警告。

不兼容更新

  1. 由于1.0a8中取消了PyQT的依赖,在a9版本中也暂时移除了QTerminal。(希望没有人用到啊啊啊)# Release 更新日志

V1.0a8

2 years ago

Release 更新日志

V1.0a8 - 2021.7.4

重要更新

  1. 在打包时增加“是否隐藏终端”的接口,若待打包的程序为PyQT、WxPython等含有可视化界面的程序,在不需要控制台/终端界面时可配置该接口进行隐藏。
    当然,若本身为控制台/终端界面的程序,这个隐藏就会很令人抓狂,QPT默认该接口为“不隐藏”。使用文档
  2. Kernel中增加copytree忽略文件级别的功能,后续将在开发自定义OP时暴露该接口。
  3. 修改了CIL部分的文案,同时增加hidden_terminal的指令。
  4. 增加WPF、MFC的进度条
  5. 增加Debug、Run、Run-Hidden三种运行模式,开发者在Debug时仍可获取全量输出信息,用户则只会感知重要信息输出。
  6. 打包前会对路径做判断,避免出现.和空格路径.
  7. 运行后会对路径做判断,若出现空格、中文等当前Windows兼容不完善的路径则会提示使用者更换目录。
  8. 加入PaddleHub、PaddleNLP、PaddleSeg深度适配方案,保证用户在使用中文用户名时可以读取参数。
  9. PaddlePaddle增加对非AVX版本安装适配。
  10. 增加VC2019运行库支持。
  11. 增加MFC运行库支持。
  12. 增加日志系统,当用户使用出现问题时,可将configs/logs目录下日志信息收集,进而快速定位报错情况。
  13. 自动控制Logging颜色,避免用户测无法出现带有颜色的输出信息。

Fix Bug

  1. 修复了打包时传入的源文件路径与保存路径一致但没有报错的情况,当前若打包时两目录为同一目录则会raise一个报错信息,提示用户需要更改路径而不是强制覆盖文件。
  2. 修复不同盘符打包可能出现的问题。
  3. 修复了镜像源设置无效的问题。

不兼容更新

  1. 进度条部分可能会从PyQT(约150M)更换为TK(25M 需要编译)、CRL+WPF(10M 难度较大)、Win32+MFC(0M 资料较少)三种方案中任一种,在选择hidden_terminal接口为False后将会取消所有依赖
  2. 原none_gui接口更名为hidden_terminal,增加了可读性。
  3. 调整目录结构,只保留exe与调试文件在目录外。

下个版本ToDO

  1. 增加自定义图标接口
  2. 增加CUDA支持
  3. 取消PyQT作为必须依赖(可能需要重写自动化依赖搜索脚本)
  4. 更新README

Tips:在未来两个版本中,仍不会出现V1.0RC版本,待大量测试验证后发布1.0RC

V1.0a7

2 years ago

V1.0a6

2 years ago

V1.0a5

2 years ago

对Python3.7版本部分API进行兼容

V1.0a4

2 years ago