Pyinstaller 简介、安装及加密

其他 pyinstaller 打包技巧见《Python程序打包指南》


PyInstaller是一个能将 Python 程序转换成单个可执行文件的程序,可以将 Python 应用程序及其所有依赖项打包到一个包中。用户可以在不安装 Python 解释器或任何模块的情况下运行打包的应用程序。PyInstaller 支持 Python 3.7 和更高版本,并正确地捆绑了许多主要的 Python 包,如numpymatplotlibPyQtwxPython等。操作系统支持WindowsLinuxMac OS X,详情见官网github文档

本文使用的环境为:Win11 X64Python 3.8.xPyinstaller 4.9

本文主要介绍三部分内容:1. pyinstaller的安装及配置,以及安装过程中出现的一些问题;2.pyinstaller其他常用的参数;3. Pyinstaller 打包程序的反编译及加密

一、Pyinstaller 的安装及安装错误处理

Pyinstaller 可以通过 python 自带的包管理器 pip 直接安装

1.1、安装命令

pip install pyinstaller

验证安装是否成功,输入pyinstaller -v命令,提示版本号即安装成功,如下⬇️:
在这里插入图片描述

1.2、安装错误处理

  1. 若提示 “Pyinstaller 不是内部或外部命令” 这类错误,则是由于python环境变量没有将​pip安装的这些包的位置添加到系统环境变量,解决方法如下⬇️:

    首先查找一下环境pip将包安装在了什么地方,然后将这个地址添加到系统变量中,再次运行上述命令就可以成功,具体步骤如下⬇️

    安装完 pyinstaller 后,执行 pip show pyinstaller,会显示出该包的安装位置,我们将该地址下的 Scripts文件夹 ​添加到环境变量中,(我的是 D:\Pyvenv\csdn\Scripts)重启命令行窗口,再次运行以上命令就会正常:

    可以看到 Scripts 文件夹下有我们的 pyinstaller.exe ​其实我们执行命令时调用的也是它。
    在这里插入图片描述
    在这里插入图片描述

  2. 💢还有一个容易出现的问题就是:如果手动切换过pip安装包缓存文件夹的位置,尤其是通过修改pip.ini切换的,会偶发性的出现设置环境变量后依旧无效的现象,这种要不就取消设置,或者重装 python。

二、其他常用参数介绍

参数作用
-h查看该模块的帮助信息
-F产生单个的可执行文件,就是单文件exe
-D产生一个目录(包含多个文件)作为可执行程序,就是打包成一个文件夹,exe在其中
-w指定程序运行时不显示命令行窗口(仅对 Windows 有效),就是隐藏cmd命令行黑框
-o[dir]指定 spec 文件的生成目录。如果没有指定,则默认使用当前目录来生成 spec 文件
–upx-dir使用upx对文件进行压缩,减小生成的exe文件的体积
–clean在构建之前,清理PyInstaller缓存并删除临时文件
-a不包含 Unicode 字符集支持
-d产生 debug 版本的可执行文件
-c指定使用命令行窗口运行程序(仅对 Windows 有效)
-p[dir]设置 Python 导入模块的路径(和设置 PYTHONPATH 环境变量的作用相似)。
-n指定项目(产生的 spec)名字。如果省略该选项,那么第一个脚本的主文件名将作为 spec 的名字

这些参数我们一般只用到-F-D-w-o--upx-dir--clean这些,其他的参数都不常用。

三、打包程序的反编译及加密

查阅了一些相关资料后,发现解包还原代码也很简单😱

3.1、反编译

提取源代码⬇️:

先下载 pyinstxtractor 包,提取生成的exe中的pyz(一般是pyc)文件

# 安装:直接执行下载的 py 文件即可
# 解包 xx.exe
python pyinstxtractor.py xx.exe

执行命令后会生成xx.exe_extracted文件夹,xxx.exe.manifest文件等。再找到一个没有后缀名的文件,就是打包的.py文件对应的pyc😏

还原代码⬇️:

然后再通过 python-uncompyle6 工具,将pyc文件反编成.py文件

# 安装 
pip install uncompyle6
# 反编译 xxx.pyc 文件,输出为 xxx.py 源码文件
uncompyle6 -o xxx.py xxx.pyc 

反编译这块我不太懂,网上有很多可以参考的教程,大家可以搜索一下,基本逻辑就是这样😀参考教程

3.2、加密

虽然被如此轻松的解密手段😰到了,但是 Pyinstaller 也是支持加密打包的,使用 --key + 密码 参数即可,例如:

pyinstaller --key 666777 xxx.py

😅不过这个加密也不是很强,对保密性有很强要求的建议使用把需要加密的模块通过C或者C++编写,通过python调用,再打包。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YumOS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值