了解 Python 的都知道 Pyinstaller 可以将 .py 文件打包成 windows 下可执行的 .exe 文件,
但是在我们不想让他人反编译获取源码的时候就显得无能为力,
此时我们可以了解 .pdy 文件。
PYD
pyc 是二进制文件,
是由 Python 编译器进行编译后生成的文件,
加载速度快。pyo 是优化编译后的二进制文件,
可以通过 python -O file.py 生成。pyd 则是 Python 的动态链接库,
由其他语言编写。
那 .pyd 可不可以反编译呢?
这是文档上的一段描述,
.pyd 由 C 或者 C++ 编译组成,
至于它是否完全不可反编译,
我相信是不可能的,
仅是加大了反编译的难度。
打包
你需要安装 Cython 以及 pyinstaller 两个扩展包作为依赖。
Docs
- 将主要代理编写至
main_code.py文件中, 建议提供入口函数main() - 编写
build.py代理并键入以下内容:from distutils.core import setup from Cython.Build import cythonize setup( name='随你写什么', ext_modules=cythonize([ "main_code.py", # 你的主要代码封装文件名 ]) ) - 执行
python3 build.py build_ext --inplace生成.pyd文件 - 重命名生成的
.pyd为main_code.pyd - 新建执行脚本文件
run.py并键入以下内容:此时你可以尝试修改from main_code import * if __name__ == '__main__': main()main_code.py成别的名字, 并运行run.py文件, 你会发现运行正常。 - 执行
pyinstaller -D -i xxx.ico -w run.py
最后你会发现你的代码中没有 .pyc 的主要逻辑代码。
说明
为了使用打包的时候使用 -D 而不使用 -F?
在生成唯一 .exe 文件后执行速度过慢,
当然我仅仅是推荐,
你可以使用任何自定义的方式编译你想要的效果。
点个赞呗~