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 文件,不去会解析引入 .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
pyinstaller -i static\logo.ico -w -p C:\Users\Boliang\AppData\Local\Programs\Python\Python36\Lib\site-packages Application.py
-w 不显示终端窗口 -p 指定库路径 -i 执行的是应用图标
参考文章:
https://blog.csdn.net/ZhaDeNianQu/article/details/87717293
https://blog.csdn.net/weixin_45116696/article/details/104861915
https://github.com/extremecoders-re/pyinstxtractor