【Python源码保护】03 - pyd或so动态库

动态链接库,在运行时链接到调用程序。在Windows下有很多dll后缀的文件就是动态库。pyd是只能运行于Windows系统上的python库,so是只能运行于Linux系统上的动态库。

Cython是一个编程语言,它通过类似Python的语法来编写C扩展并可以被Python调用。将 .py 编译为 .c 文件,再将 .c 文件编译为 .so(Unix) 或 .pyd(Windows),这样得到的文件更难反编译,同时带来了性能提升,缺点是兼容性稍差,对于不同版本的操作系统,可能需要重新编译, 虽然支持大多数 Python 代码,但如果一旦发现部分代码不支持,完善成本较高 。

下面以一个示例演示如何将python文件转成动态库文件,以供调用。

安装cython

pip install cython

mysum.py:

def sum(a, b):
    return a + b

mysum.py同目录下新建个setup.py文件,

setup.py:

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

setup(ext_modules=cythonize('mysum.py'))

在此目录下执行以下命令:

python setup.py build_ext --inplace

得到以下目录结构:

【Python源码保护】03 - pyd或so动态库_第1张图片

其中的mysum.cp39-win_amd64.pyd就是生成的动态库, 需要注意的是,使用这种方式加密后的文件使用时需要使用生成时的 Python 版本

仅保留mysum.cp39-win_amd64.pyd,调用方式:

import mysum
mysum.sum(1, 2)

你可能感兴趣的:(python,python,开发语言)