一、目的:
python的解释特性是将py编译为独有的二进制编码pyc文件,然后对pyc中的指令进行解释执行,但是pyc的反编译却非常简单,可直接反编译为源码,当需要将产品发布到外部环境的时候,源码的保护尤为重要。
二、编译步骤:
1.将.py文件转换成.c文件
2.将.c文件转换成.so文件
三、环境要求:
cython python模块、python-dev库、gcc、编译工具。
四、创建 hello.py
#-* -coding: UTF-8 -* -
__author__ = 'JiangJihai'
class test:
def say(self):
print 'hello'
五、创建build.py
from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules = cythonize(["hello.py"]))
六、手动编译
1.通过python IDE 运行 build.py
生成hello.c
2.通过gcc 编译成 so文件
gcc -c -fPIC -I C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\include test.c
gcc -shared test.o -o test.so
七、自动生成
python3 ./build.py build_ext --inplace
八、验证:
>>> import hello
>>> h = hello.test()
>>> h.say()
hello
>>>