使用 Cython 将核心模块编译为
.pyd(Windows)或.so(Linux/Mac) 是目前最稳定、兼容性最好、且能有效防止反编译的方案之一
1. 安装 Cython 和编译工具
pip install cython
2.创建 setup.py 编译脚本
# setup.py
from setuptools import setup
from Cython.Build import cythonize
import os
# 要编译的模块列表
extensions = [
"utils/utils.py", # 路径:utils/utils.py → utils/utils.pyd
"data_spider.py", # 路径:data_spider.py → data_spider.pyd
# 可以继续添加其他模块
]
# 过滤掉不存在的文件
extensions = [f for f in extensions if os.path.exists(f)]
setup(
ext_modules=cythonize(
extensions,
compiler_directives={
'language_level': 3, # 使用 Python 3 语法
'embedsignature': True, # 保留函数签名(便于调试)
},
annotate=True # 生成 HTML 注释文件(可选)
),
zip_safe=False,
)
3.编译模块为 .pyd
python setup.py build_ext --inplace
编译成功后你会看到:
build/
utils/
__init__.py
utils.c ← 生成的 C 代码(可忽略)
utils.pyd ← 编译后的二进制模块 ✅
data_spider.c
data_spider.pyd ← 编译后的二进制模块 ✅
你原来的导入方式 完全不需要改!
4.可选:删除原始 .py 文件(增强保护)
编译成功后,你可以删除原始 .py 文件,只保留 .pyd:
5.用 PyInstaller 打包(关键配置)
现在用 PyInstaller 打包时,要确保:
.pyd文件被包含- 添加
--hidden-import防止被忽略
3021

被折叠的 条评论
为什么被折叠?



