‘壹’ python程序代码混淆、编译、打包、运行(桌面程序防破解向)
像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即可。
混淆的目的是最大程度保护源码,在发布到客户端后不被轻易破解。
‘贰’ python如何编译
1、说明
编译python程序就是把python脚本转换成操作系统中的可执行文件,一般使用pyinstaller来完成。
2、步骤
(1)安装pyinstaller
使用pip install pyinstaller命令来安装
(2)编译脚本
python安装目录scriptpyinstaller 脚本文件名
(3)完成
执行脚本后就可以在脚本目录生成dist目录,目录就有打包好的可执行文件
3、备注
pyinstaller参数
-w指令
直接发布的exe应用带命令行调试窗口,在指令内加入-w命令可以屏蔽。
-F指令
注意指令区分大小写。这里是大写。使用-F指令可以把应用打包成一个独立的exe文件,否则是一个带各种dll和依赖文件的文件夹。
-p指令
这个指令后面可以增加pyinstaller搜索模块的路径。因为应用打包涉及的模块很多。这里可以自己添加路径。不过经过笔者测试,site-packages目录下都是可以被识别的,不需要再手动添加。
python学习网,大量的免费python视频教程,欢迎在线学习!
‘叁’ python怎么编译
python编译用pyinstaller命令。
在python命令输入框中可以用命令pip install pyinstaller 来安装pyinstaller
‘肆’ Python脚本如何编译
Python是脚本语言,解释执行,不需要编译。pyc是为了提高效率。就知道这么多。
‘伍’ Python关于.pyd文件无法import的问题的解决方法
当我想加载pyd文件,用Python调用里面的函数时
使用语句:import tick_gy as gal
pycharm编译器报错: MoleNotFoundError error from .pyd file: MoleNotFoundError: No mole named"tick_gy" 表示一直找不到该模块
找了半天,最终解决了此问题,特此分享给大家。卜芹笑如果大神有更好的办法请留言,谢谢分享。
一种可能是:.pyd文件名称 于该语句中的“import tick_gy as gal”不一致
另外一种可能是:.pyd文件目录错误,应放在在Python编译器的Lib/site-packages目录下
还有一种可能是:环境变量。Python文件找不到.pyd文件目录,应将.pyd文件目录添加至环境变量中
1. 手动添加环境变量。采用系统手动添加
2.将该语句放置在import tick_gy as gal语句前
sys.path.append('C:\\Users\\lenovo\\AppData\\Local\\Programs\\Python\\Python39\\Lib\\site-packages')
os.environ['path'] += ';C:\\Users\\lenovo\\AppData\\Local\\Programs\\Python\\Python39\\Lib\\site-packages'
在尝试了三种可能性操作了,统统失败。最终原因是因为pycahrm编译器为Python39,首模而生成.pyd文件的编译器是Python37。两者编译器版本不兼容,将Python39卸载,重装Python37,无需上述操作型含,成功!
‘陆’ python如何编译
编写的话,拿什么编辑器编写都可以。
如果是编译的话,python是不需要编译的,直接运行即可。
运行的话,你需要安装一个python的解释器,可以是官方python,actiePython或者其他版本的python。
然后你可以选择python自带的IDLE编写,也可以在命令行下输入python进入交互shell进行编写,当然也可以用支持python语言的IDE进行编写。
‘柒’ 如何在windows下编译执行python脚本
Python安装好以后,在开始菜单会看到一个idle工具(一个增强的交互命令行解释器窗口)以及一个自带的编辑器。
在任意目录新建一个.py文件或者保存的时候以.py结尾,用记事本、Python自带的编辑器或者其他编辑器如Sublime
Text或者NotePad++都行。
如果你使用的是idle,直接按F5就能在Python自带的命令行查看结果
如果是用记事本或者其他编辑器,快捷键win+R调出运行目录,输入cmd,然后在命令行里进入这个目录,输入python
[filename].py或者[filename].py就可以看到运行结果了