python不像c,java等编译型语言(编译后发布机器码),解释型则必须把源码发布出去,但仍存在一些交付场景希望能够将python代码加密。
为什么转换为pyc?
- pyc官方的解释还请自行google
- 简而言之,pyc文件为字节码文件,单个.py生成.pyc文件后运行效果相同
- pyc文件运行效率高于py文件(少了解释器对源码的转换)
- pyc虽然可以进行逆向转换,但不一定可靠(没试过),不过已经满足了简单加密的需求,毕竟源码裸奔交付是心理上不能接收的
如何转换为pyc?
1 | python -m compileall (file or dir) -b |
- -b 支持生成pyc文件于当前目录而非
__pycache__
配合jenkins进行自动集成发布
- 基于flask开发目录
1 | /app |
1 | /bin/sh |
- 以上脚本基于svn代码管理,如使用git,则flake8,pytest测试可通过git hook,而单单保留代码加密
- gunicorn 貌似不支持指定pyc为配置文件,但这不影响整体的加密效果,后续可以在研究研究,毕竟对于我这种重度洁癖患者,留这一个.py文件就像一个小疙瘩,总想给它挠掉