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没找到,需安装以下,
本文来自博客园,作者:__username,转载请注明原文链接:https://www.cnblogs.com/code3/p/18544372