Cython + Pyinstaller 防止反编译打包
1. 在项目根路径创建 build_pyd.py (文件名随意,以下命令默认此文件名)
from distutils.core import setup
from Cython.Build import cythonize
setup(
name='any words.....',
ext_modules=cythonize(["request/HttpService.py"])
)
cythonize(["需要加密的源码文件", "需要加密的源码文件"])
注:入口文件不能加密
2. 将需要加密的源码引入的依赖包复制到主入口文件
例如:HttpService.py 依赖了以下几个包
import configparser
import json
import time
import ahttp
而项目的主入口文件是 Application.py ,此时需要复制这几个依赖代码到 Application.py
原因: Pyinstaller 打包是默认加载 .pyd文件,不会检测并加载所需的包文件
3. 在终端窗口执行
python build_pyd.py build_ext --inplace
4. 执行完成后会在文件对应的目录下创建 XXX.c 和 XXX.cp36-win_amd64.pyd 两个文件。其中 .c 是临时文件 .pyd 则是python的动态链接,接下来打包会引入此文件。
5. 然后再执行打包命令
pyinstaller -i static\logo.ico -w -p venv\Lib\site-packages Application.py
-i 是应用图标,-w 隐藏启动终端窗口,-p 是python是包路径,Application.py包含main方法的文件
参考资料:
https://blog.csdn.net/ZhaDeNianQu/article/details/87717293
https://blog.csdn.net/weixin_45116696/article/details/104861915
https://github.com/extremecoders-re/pyinstxtractor