背景
近期项目到了部署的阶段。由于项目后台和算法都是用Python "撸的",但是又不希望将源代码直接 "release" 到 “客户”哪里。于是开始思考。。。
首先,按照惯性思维,能否将编译后的东东放出去呢?(类似java或.net 的部署方式)
再次,是不是能否将“关键部分”的代码保护起来呢?
解决方案
按照第一种思路,我们能将Python编译好的东西release出去呢?经过一些简单的理论查找和时间。发现了可行的解决办法。于是乎,就在今天的博客随笔中将其记录下来吧 :)
Python 生成编译后的二进制文件的方法,官方提供了两种方式: py_compile, compileall
1) 使用模块 py_compile 编译单文件
1.1 进入到Python交互环境中,键入一下命令
import py_compile py_compile.compile(‘/home/ct/Dowork.py‘)
或者直接执行脚本
python -m py_compile /home/ct/Dowork.py
运行结果如下:
2) 使用模块 compileall 编译多个文件或目录, 方法和上面的一样,这里直接贴出结果:
可以看到,我们一共将4个Python“源文件”生成为编译后的“二进制”文件。 到这里我们编译工作已经完成!!
测试程序运行
程序的依赖关系为: Dowork.py 引用statics.py 中定义的方法, 经过测试,发现在删除statics.py 源文件但是保留 statics.pyc 的情况下,运行Dowork.py中的测试程序程序依然正常!!
因此,可以宣告: 这次将源码编译后,程序依然可以正常工作。 Well done!!
参考:
https://docs.python.org/2/library/py_compile.html
https://docs.python.org/2.7/library/compileall.html
原文地址:https://www.cnblogs.com/atuotuo/p/9096891.html