pyinstaller
安装模块
pip install pyinstaller
查看版本是否安装
pyinstaller -version
打包成exe文件
pyinstaller [opts] mainpy
- -F 打包成一个exe文件
- -D 创建一个目录,包含exe文件, 会有很多依赖 默认
- -c 使用控制台
- -w 使用窗口
- -i myy.ico 自定义ico , ico要与主入口同级
- —key==密码 加密打包
```python
在项目的目录 根目录中 cmd终端 执行此命令, 注意 main.py 是文件的入口
pyinstaller -F -w main.py
<a name="Nlk8D"></a>
### 自定义图标
使用 [https://www.aconvert.com/cn/icon/jpg-to-ico/](https://www.aconvert.com/cn/icon/jpg-to-ico/) 转换为 ico 大小一般128*128
```python
pyinstaller -F -w -i E:\xinge\img\logo.ico -key 184383bnm BaiduAD.py
pyinstaller -F -w --icon="my.ico" --key=184383bnm main.py
生成之后,你会看到还是官方的图片, 你只要修改软件的名称 即可 变成你自已定义的ico
pyinstaller -F -w -i myy.ico --key=184383bnm main.py
pyinstaller -F -w -i E:/008Python01/pycrawler/demo06/resource/images/myy3.ico --key=184383bnm main.py
pyinstaller -F -w -i E:/008Python01/pycrawler/day05_2.2/images/myy.ico --key=184383bnm main.py
def setupUi(self):
self.setWindowIcon(QtGui.QIcon(':/icons/myy.ico'))
这个资源文件要添加进去
最终生成自定义图标
打包报错
报错 cryptography.hazmat.backends
pip install cryptography --upgrade
Nuitka
nuitka作为一个打包工具,实现了工具的跨平台,Windows和Linux下都能对python文件进行打包,这里解释一下,nuitka只能打包python文件(也就是.py文件),对其他格式的文件无法打包。在Windows下最终打包成一个.exe文件,Linux下打包成Linux执行档。
nuitka的工作原理是把python代码编译成C++代码,再把C++代码编译成可执行文件,生成的文件不能像.pyc文件一样反编译,因此安全性高,而且因为编译成C++代码,所以生成的.exe或者Linux执行档运行速度会更快。
01 下载地址
https://sourceforge.net/projects/mingw-w64/files/ 往下拉 找到
下载好之后解压之后放到自已喜欢的目录, 然后设置 系统环境变量
02 设置C++ 环境变量
检查 是否安装成功
gcc.exe --version
03 下载Nuitka
切换到指定的python 的环境(conda的环境管理 ) 输入安装命令
pip install nuitka 或者 conda install nuitka
04 打包
nuitka main.py
05 正式打包流程
重点理解 nuitka 功能, 为什么需要创建need文件夹
UI和密码. IP和重要的py脚本文件要防止反编译,必须全部放到一个文件夹, 全部生成c++文件, 其他的让python3X.dll去执行(引入的系统模块,第三方模块等)
创建文件夹 放入需要加密的文件
1.比如我现在 自定义一个文件夹名为 need 的文件夹, 然后把我的UI文件, 和各种我觉得需要加密的文件都放进去
还需要修改main.py 主程序引入文件的入口 . 建议刚开发的时候就创建 need文件夹存放各种项目文件
那么后面就可以进行打包了
(1)调试打包
调试前的命令行(need为文件夹名称,可自行修改,不包含—windows-disable-console,就可以在CMD窗口显示错误,方便调试缺少的模块):
①输入命令
nuitka --standalone --show-memory --show-progress --nofollow-imports --enable-plugin=pyqt5 --follow-import-to=need --output-dir=o main.py
②打包完成
③调式运行
然后把 打包出现的main.exe 直接拖入到cmd窗口运行, 把缺失的文件一个个 复制到 xxx.dist文件夹内,
可以使用这个工具 .
然而新版的nutika 会自动把需要的第三方模块都复制进来到这个文件夹xxx.dist
运行 调式打包后的文件main.exe 正常运行的话就开始后面的正式打包环节!!!
(2)正式打包
调试后的命令行(need为文件夹名称,可自行修改,在上面的调试代码基础上增加—windows-disable-console,不再显示CMD黑窗口去报错 ):
在项目的根目录下 执行cmd 命令
nuitka --standalone --windows-disable-console --nofollow-imports --show-memory --show-progress --enable-plugin=pyqt5 --follow-import-to=need --output-dir=o main.py
正式打包完成后 , 也是会在 xxx.dist文件夹下显示, 然后你找到你的exe的文件, 你会发现正式打包的exe文件 大概会在20MB左右, 而 调式打包的exe文件在200-300KB左右, 那么现在exe 就已经打包完成了
我们看到这个文件夹下, 有好多文件, 那能不能打包成一个单独的exe文件呢?
答案是不支持, 如果是这样的话, 全部打包成一个exe里会很臃肿
06 打包报错
01 提示你安装windows SDK , 这个时候下载安装
VisualStudioSetup.py 下载之后把后缀名py改为 exe
软件打开之后 安装, 选择如下配置 即可. 大概下载10G左右的文件, 然后再到cmd 再输入打包命令 即可
02 提示 你安装指定的版本mingw64
03 提示 INFO:后台链接程序(没有可用的进度信息)。
Nuitka-Scons: INFO: Backend linking program (no progress information available).
解决办法 不要使用 —mingw64 命令 因为你安装了 Visual Studio 2022 打包的时候就不要填入 这个 —mingw64 命令
Visual Studio 2022能解决70% 遇到的问题
04 提示 错误:没有这样的选项:——recurse-all
error:no such option:—recurse-all
解决办法 这个命令在官方的说明已经取消了,所以我们不需要输入这个被废弃的命令 —recurse-all