这两天被CTF的题虐的好惨,想放松一下自己,就想到用Python写一个校园网自动登录的小脚本,基本功能都写出来后,想让舍友帮忙测试一下bug,却被告知没安装python,并提出了EXE文件的需求。想了想,我决定开始学习PyQt5,一个强大的开发windows程序的python库。
学了半天,一些比较简陋的小功能可以实现了,在python内运行windows程序窗口基本没问题。
但但但但是,在将写好的源代码打包成exe文件时,遭遇了太多太多的坑,哪怕我为了排除不必要的错误,额外装了一台纯净的win10虚拟机,只安装了python3.7(避免和2.7和anaconda出现冲突),pip只安装了requests、PyQt5,依然无法存在无法解决的坑,甚至遇到了一个谷歌、百度一共找到两个解释的网页的问题,一个说暂时略过,一个说删除某dll文件。从github上的issue上对此的讨论,我也看不出来结果。可能pyinstaller的bug,也可能pyinstaller、PyQt5、Python的三者不同版本之间不兼容。总之,复杂无比。
我最终还是打算放弃了PyQt5,虽然我认为这个锅应该是pyinstaller的。但是无法打包,程序写的再好也没有普适性。
总结一下弃坑的原因:
pyinstaller的维护团队毕竟不能和大软件相比,pyinstaller、PyQt5、Python的三者不同版本之间的完美兼容很难做到。而且,我了解到pyinstaller不支持requests的某一版本。这还只是一个例子而言。哪怕今天解决了这个问题,明天三者任何一个升级,都可能导致新问题的出现。而又回到了最初的问题,可以参考的资料太少。
明天有时间开始学QT吧。到时候QT做框架,内部再调用写好的Python程序。
原先写的程序很简陋,很多地方都没考虑全面,比如mac地址直接复制我自己的、没有加入判断当前网络状态、密码明文存储等,但还是放到github吧,毕竟也算是我的第一个GUI程序。虽然无法打包成exe,但是pip安装了PyQt5和pyqt-tools后,还是能通过python运行GUI的。
github链接:https://github.com/iyzyi/cumt_cmcc_edu
不建议将这个拿来用作校园网自动登录的脚本,如果有这个需求,这里推荐俊达大佬用JAVA写的,https://download.lsmg.xyz/
真正的大佬自己写打包程序,牛掰的巨巨会用打包程序,唯有笨笨的菜鸟决定换款程序。泪牛满面。