py源码的保护之编译为so文件及引用方法


应用场景

  Python是一种面向对象的解释型计算机程序设计语言,具有丰富和强大的库,使用其开发产品快速高效。

  python的解释特性是将py编译为独有的二进制编码pyc文件,然后对pyc中的指令进行解释执行,但是pyc的反编译却非常简单,可直接反编译为源码,当需要将产品发布到外部环境的时候,源码的保护尤为重要.

准备工作

  环境是可为linux/centos,我Windows10本地是Bash on Ubuntu on Windows,用起来很方便,命令行打bash即进入命令行

  思路是先将py转换为c代码,然后编译c为so文件

  所以要安装以下内容

    python 安装:cython

      pip install cython

    linux 安装:python-devel,gcc

      yum install python-devel

      yum install gcc

初步编译

  在testing文件夹下有your_file.py文件待编译,内容如下

- -coding: UTF-8 - -

author = 'Arvin'

class test: def say(self): print 'hello'   新建setup.py,内容如下

from distutils.core import setup from Cython.Build import cythonize

setup(ext_modules = cythonize(["your_file.py"]))   在bash中执行

cd testing python setup.py build_ext

  运行后会生成build文件夹,如下,lib.linux-x86_64-2.7下就是我们想要的.so文件

引用方法,就将so文件视为.py直接引用方法即可