了解 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
文件后执行速度过慢, 当然我仅仅是推荐, 你可以使用任何自定义的方式编译你想要的效果。
点个赞呗~