使用Pyinstaller打包EXE
本文最后更新于:5 个月前
安装 pyinstaller 库
1 |
|
使用 pyinstaller 打包
选项参数
选项 | 描述 |
-h,–help | 显示帮助信息 |
-v,–version | 显示版本号 |
–distpath DIR | 指定打包后的程序存放目录,默认存放在当前目录下的dist目录 |
–workpath WORKPATH | 为输出的所有临时文件指定存放目录 |
–clean | 在构建之前,请清理PyInstaller缓存并删除临时文件 |
-D,–onedir | 生成结果是一个包含exe程序的目录,所有第三方依赖库和其他资源和exe程序位于同一目录下 |
-F,–onefile | 生成结果是一个exe程序,所有第三方依赖库和其他资源都被打包进该exe程序中— |
–key | 对打包进行加密处理 |
反编译Pyinstaller打包的exe
这样的exe已经可以被迁移到别的电脑上使用了,如果是为了方便其他电脑使用,到这一步就已经结束了。但有时候,我们可能是把这个功能给很多人用,但如果不想开源或者被别人破解,到这一步是还不够的。因为到这一步的exe是可以被别人反编译出源码的
工具
exe反编译工具:pyinstxtractor.py
pyc反编译工具:Easy Python Decompiler 或者在线反编译pyc。
将pyinstxtractor.py放到exe文件相同目录,执行以下cmd命令:
1 |
|
将脚本编译为pyd以防止反编译
如何解决呢,可以考虑将模块py文件编译为动态链接库,这样破解难度将大大增加。其中,在python里,pyd格式即动态链接库。使用cython即可编译,如果是anaconda是自带,python有的可能不带cython,安装即可:
1 |
|
我们在main.py所在的文件夹新建py文件,在此处我命名为build_pyd.py,其内容如下:
1 |
|
然后执行以下cmd命令:
1 |
|
此时就会多出一个pyd后缀文件,修改文件名,然后我们删除build、disk文件夹,重复步骤二,再次编译为exe即可。
错误问题
执行出现 unable to find vcvarsall.bat
安装Visual C++ Build Tools 2015/2017 即可 下载地址
打包出现问题
1 |
|
参考地址
https://www.jb51.net/article/184725.htm