其次,要明确需求,余老根据实际需求编写代码写出要实现的功能逻辑。
然后,对代码进行调试验证,进行迹毁帆执行姿雹。
像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即可。
混淆的目的是最大程度保护源码,在发布到客户端后不被轻易破解简汪。
如果你曾经很熟悉visual studio的工作方式。可能对python不习惯。 工程通常只与你使用的IDLE有关系。这些工具习惯将文档,编译,测试集成一体。所以就存在工程的概念。不过如果你就是想编程。其实并不需要工程。 python每个脚本,或塌迅者是一组脚本都可以直接运行。 eric4, wingide, komodo, eclipse+pydev, vs通常都会型行要求你建立一个工程。当然你不建立也一样可以使用。 django生成的那个也算是工程,不过它没有工程配置,只有程序框架配置。应该更象是程序框架。 webpy相对简单只有一卜衫哗个文件就解决,bottle更简单。 eclipse+pydev有些体积大。不过它的语法检查和提示还是很不错的。可以提高效率。我更喜欢sublime text。偶尔用python自己的IDLE和vi
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)