Python 文件通过 Cython 编译为 C 代码并生成 .pyd 扩展模块(Windows 下的动态库)。

假设有一个简单的 Python 文件 my_module.py,希望将它编译为 .pyd 文件,以保护代码。

1. 安装 Cython

首先确保安装了 Cython:

pip install cython

2. 创建 Python 文件

假设有以下 Python 文件 my_module.py

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

def multiply(a, b):
    return a * b

3. 编写 setup.py 编译脚本

需要编写一个 setup.py 文件,通过 Cython 将 my_module.py 编译为 .c 文件,并构建为 .pyd 文件。

from setuptools import setup
from Cython.Build import cythonize
from setuptools import Extension

# 定义扩展模块
extensions = [
    Extension("my_module", ["my_module.py"])
]

setup(
    ext_modules=cythonize(extensions)
)

4. 编译代码

在命令行中运行以下命令,将 my_module.py 编译为 .pyd 文件:

python setup.py build_ext --inplace

执行后,会在当前目录生成 my_module.pyd 文件,这个文件就是编译后的扩展模块。

5. 使用编译后的模块

可以在 Python 中导入编译后的 .pyd 文件,并调用其中的函数:

# dtest.py 测试用的
import my_module

print(my_module.add(5, 3))       # 输出 8
print(my_module.multiply(5, 3))  # 输出 15

注意事项

  • Cython 生成的 .pyd 文件并不完全不可逆,但逆向工程难度较大。
  • 如果想进一步增加保护,可以将 my_module.py 重命名为 my_module.pyx,然后编译它以提高代码的混淆性。
  • 编译器要求:Windows 上建议安装 Visual Studio 的 C++ 编译器。Linux 和 macOS 系统一般已自带编译器。

编译后的一些文件可以移除 ,如图


温馨提示

发给别人,如出现ku没找到,需安装以下,

posted @ 2024-11-13 17:19  __username  阅读(8)  评论(0编辑  收藏  举报

本文作者:DIVMonster

本文链接:https://www.cnblogs.com/guangzan/p/12886111.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。