pyinstaller 使用指南 加密打包Python项目

一、安装

pip install pyinstaller

若使用参数 --key 对打包进行加密,则会提示安装 pip install tinyaes

二、命令行

pyinstaller -F --key '12345678' --clean main.py --distpath=DIR
pyinstaller -F -w mycode.py (-w就是取消控制台)

eg:pyinstaller -F --key '12345678' --clean D:\main2.py --distpath=D:\Atest

三、选项参数

选项描述
-h,--help 显示帮助信息
-v,--version 显示版本号

--distpath

DIR

指定打包后的程序存放目录,默认存放在当前目录下的dist目录

--workpath

WORKPATH

为输出的所有临时文件指定存放目录
--clean 在构建之前,请清理PyInstaller缓存并删除临时文件
-D,--onedir 生成结果是一个包含exe程序的目录,所有第三方依赖库和其他资源和exe程序位于同一目录下;推荐使用
-F,--onefile 生成结果是一个exe程序,所有第三方依赖库和其他资源都被打包进该exe程序中

四、下载缺失DLL文件

免费下载 https://cn.dll-files.com/

五、打包的.exe文件在其他电脑无法运行

最好使用与运行电脑系统相匹配的python版本。

例如:python3.4安装后自带pip和setuptools的版本较低,升级对应的版本

以下是为在XP系统搭建python3.4.4+PyQt5+pyinstaller环境

pip install pip==19.1.1
pip install setuptools==42.0.2

在python3.4中安装pyinstaller,需要安装以下第三方库,可参考博文

pip install wheel==0.33.6 #升级wheel

#下载pywin32(pywin32-224-cp34-cp34m-win32.whl)
#https://www.lfd.uci.edu/~gohlke/pythonlibs/ 可进入下载第三方库
pip install 这里拖入下载好的whl文件

pip install future==0.18.2 #安装future

pip install pyinstaller==3.2.1 #最后完成安装pyinstaller-3.2.1

安装版本更高的pyinstaller

安装pyinstaller3.3或者3.3.1版本

  • 除了上面的,还要先安装
  • altgraph-0.17
  • macholib-1.14
  • pefile-2019.4.18

安装pyinstaller3.4或3.5版本

  • 除了上面的,还要先安装
  • pywin32-ctypes-0.2.0

:第二次配环境出现了一些错误,这里进行一些补充

  打包需要加密可安装 pycrypto,安装地址在下面有

安装相应版本PyQt5

PyQt5.4.1 下载地址

https://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-5.4.1/

打包后的exe文件进行反编译

  • 准备好(pyinstaller -F python文件)打包好的exe文件
  • 通过pyinstxtractor.py脚本提取打包的exe文件中的pyc文件

pyinstxtractor下载

pyinstxtractor.py脚本可以在Github项目python-exe-unpacker中下载,地址:https://github.com/countercept/python-exe-unpacker

下载完成以后需要先安装运行pyinstxtractor.py脚本所需的依赖项,才能够执行

pefile==2017.9.3
unpy2exe==0.3
uncompyle6==2.11.5
xdis==3.5.5
pycrypto==2.6.1
configparser==3.5.0

其中pycrypto安装容易报错,可以直接下编译好的exe安装包,地址:https://download.csdn.net/download/bow_Rain/85502217

 需要注意的是,安装完成后,要把Python安装目录\Lib\site-packages下的crypto改为Crypto,不然import提示依然找不到模块。

使用pyinstxtractor.py脚本反编译

将pyinstxtractor.py脚本复制到与exe文件同级目录下,然后进入exe文件所在目录的cmd执行:

python pyinstxtractor.py exe文件
#eg:python pyinstxtractor.py main.exe

执行后便得到exe文件名加上_extracted后缀的文件夹

 

生成拆解目录如下:

--- xxx.exe_extracted
   -- out00-PYZ.pyz_extracted
      - 各种.pyc文件
   -- out00-PYZ.pyz
   -- some
   -- others
   -- xxx(注意这些都是没后缀的)

PYZ-00.pyz_extracted文件夹内是import的文件

 

 

参考:

http://www.360doc.com/content/21/1130/10/77916720_1006517975.shtml

https://blog.csdn.net/lemonbit/article/details/121173219

https://blog.csdn.net/zy841958835/article/details/79446871?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-79446871-blog-124245642.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-79446871-blog-124245642.pc_relevant_default&utm_relevant_index=2

https://blog.csdn.net/feelinghappy/article/details/109328697

posted @ 2021-02-08 11:50  哈撒king  阅读(4222)  评论(0编辑  收藏  举报