
像Python这种解释性的语言,要想私有拦孙仔化部署的同时又保护好源码,就像是对于鱼和熊掌的追求。
虽然做不到尽善尽美,但是对代码进行混淆,增加一点破解的难度,或许能规避一些泄露的风险。
本次演示环境:linux
确保要发布的包根目录("demo")中有__main__.py文件,这个是程序执行入口。
编译
批量改名.pyc文件
移动.pyc文件
清理.py文件
清理__pycache__文件夹
打包成zip
运行时只要将zip文件作为参数即可
最终整合脚本
调用方式
对于在变量和函数名上的混淆有点小儿科,而对于跨文件的类名的混淆又太容易实现。
所以对于混淆程度的取舍,要视工程的规模而定。
2.1 混淆工具pyminifier
在原来的工具 pyminifier上修复了几个bug。
安装:
python3 安装
或者clone下来,自行安装
使用例子
2.2 源码变更
不同的配置对于源码的要求不同,以下是笔者踩过的坑。
其他混淆想法
结合混淆、编译和打包,尝试出以下发布脚本。
主要的思路 :创建一个工作目录tmp,然后在此目录下混淆、编译python代码,完成后把内容打包成pyc文件,再将pyc文件和其他配置文件移凯冲动到dist,发布dist即可。
混淆的目的是最大程度保护源码,在发布到客户端后不被轻易破解简汪。
这里介绍3个python桌面开发的包,分别是tkinter,wxpython和pyqt,这3个包都可以快速的开发出桌面应用,下面我简单介绍一下这3个租正包的安装和使用,实验环境win10+python3.6+pycharm5.0,主要内容如下:
1.tkinter:这个是python自带的开发桌面GUI的标准库,不需要安装,跨平台、可移植性高,支持主流的 *** 作系统,像Windows,Linux,Mac等,python自带的IDLE就是采用这个包开发,简单易学,容易上手,适合小型项目的开发,入门GUI开发的话,可以试一下这个包,官网资料https://docs.python.org/2/library/tkinter.html:
程序运行如下:
2.wxpython:这是python一个优秀、成熟的跨平台GUI包,但不是自带的标准库,需要单独安装,支持的组件众多,可以帮助程序员快速的创建功能齐全、界面友好的GUI界面,应用广泛,非常适合中小型项目的开发,官网资料https://docs.wxpython.org/,可以参考学习一下,下面我简单介绍一下安装和使用:
安装,这里直接在cmd窗口输入命令“pip install wxpython”就行,如下:
安装成功后,就可以进行简单的测试了,代码如下,一个简单编辑器:
程序运行截图如下:
3.pyqt:这个是Qt提供给python的一个接口包,Qt功能强大,组件众多,可以快速构建用户GUI界面,所以pyqt的功能贺饥也十分强大,借助于Qt,我们可以构建桌面应用,下面我简单介绍一下pyqt的安装和使用,官网资料http://pyqt.sourceforge.net/Docs/PyQt5/:
安装pyqt5,这个直接在cmd窗口输入“pip install pyqt5”就行,如下:
测试代码如下,一个简单的计算器:
程序运行截图如下:
当然,你也可以借助designer.exe直接拖拽控件,完成GUI界面开发,如下,最后打包成py文件就行:
目前,就介绍这3个包吧,网上也有许多这方面的教程,感兴趣的话,可以搜搜,希望以上分享的内容能对你有所帮禅型返助吧。
一 、当写这篇文章的时候,pyinstaller官网版本对pyqt5打包可能会遇到Could not find QtWebEngineProcess.exe.的错误。解决方法为:
二 、如果有报错:“could not find or load the Qt platform plugin "windows" ”。原因之一可能是你把打包后的文件放在了中文敏雹目录下。只需要将打包后的文件放在英文目录下,就可以解决。
三、 多文件打包为单一文件时,即pyinstaller 命令中加入了-F,也可能会导致错误。尽量不要使用-F。
使用pyinstaller打包的时候团拿罩,仅打包.py文件,其余依赖项只需在打包完成后,拷入打包生成的根目录即可。
命令格式如下,下命令为一条命令,为方便显示塌闹做了分行处理:
以上文图中结构为例,在根目录打开命令窗口,输入命令:
在目录结构:“程序根目录\dist\main\” 下可以找到生成的main.exe。将其他依赖文件拷贝进入“程序根目录\dist\main\” 下,即可运行。
=========吃鸡、撸码复古键盘=========
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)