大家都知道python是解释型语言,pyinstaller打包,很容易被反编译
用Nuitka打包能避免这种情况发生,Nuitka是一个能将Python代码转换为C的编译器。
打包后运行,没有任何问题,打开的速度也快了不少。
放在虚拟机windows10、windows7、windows2008运行都没有发现任何问题。
Python==3.8.13
PySide2==5.15.2.1
Nuitka==0.8.2
Windows10 64位
安装Anaconda3:
Anaconda3安装教程+配置环境变量(图文教程)https://blog.csdn.net/love906897406/article/details/125010258https://blog.csdn.net/love906897406/article/details/125010258
pip install nuitka
pip install PySide2
如果安装太慢,可以用这个:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyside2
nuitka --standalone --windows-disable-console --windows-icon-from-ico=favicon.ico --enable-plugin=pyside2 --include-data-dir=./image=./image main.py
发现卡在这里了
选中这个链接,ctrl+c复制,复制到迅雷下载,然后关闭此窗口。
下载完成后,解压,把mingw32文件夹复制到c盘
鼠标右键"此电脑",选择“属性”,选择"高级系统设置",选择"高级",选中“Path”变量,点击"编辑"
点击"新建",添加变量值:“C:\mingw32\bin”,添加好记得点确定
配置好环境变量,重新打开Anaconda Prompt
输入以下命令查询mingw是否配置正确。
gcc -v
如跟下图显示一致,则配置没有问题。
输入以下命令,重新开始打包
nuitka --standalone --windows-disable-console --windows-icon-from-ico=favicon.ico --enable-plugin=pyside2 --include-data-dir=./image=./image main.py
输入"yes",按"enter"键,安装ccache,以后再次编译会快很多。也可以选择不安装,不安装则输入"no"
如果输入yes后,长时间卡着,老方法,复制链接到迅雷进行下载,下载好之后移动到指定目录
这里可以看到打包完成了 ,打包好的exe在main.dist目录下
运行,没有任何问题,打开的速度也很快。真正的体验到了Python的开发效率,C的运行速度。
放在虚拟机windows10、windows7、windows2008运行都没有发现任何问题。
nuitka --standalone --windows-disable-console --windows-icon-from-ico=favicon.ico --enable-plugin=pyside2 --include-data-dir=./image=./image main.py
--mingw64 #默认为已经安装的vs2017去编译,否则就按指定的比如mingw(官方建议编译器使用mingw)
--output-dir=out 生成exe到out文件夹下面去
--windows-disable-console #不显示控制台窗口
--nofollow-imports # 所有的import不编译,交给python3x.dll执行
--follow-import-to=need #need为你需要编译成C/C++的py文件夹命名
--standalone #独立环境,这是必须的(否则拷给别人无法使用)
--show-progress #显示编译的进度,很直观
--show-memory #显示内存的占用
--include-qt-plugins=sensible,styles #打包后PyQt的样式就不会变了
--plugin-enable=qt-plugins 需要加载的PyQt插件
--plugin-enable=tk-inter 打包tkinter模块的刚需
--plugin-enable=numpy 打包numpy,pandas,matplotlib模块的刚需
--plugin-enable=torch 打包pytorch的刚需
--plugin-enable=tensorflow 打包tensorflow的刚需
--windows-icon-from-ico=你的.ico 软件的图标
--windows-company-name=Windows下软件公司信息
--windows-product-name=Windows下软件名称
--windows-file-version=Windows下软件的信息
--windows-product-version=Windows下软件的产品信息
--windows-file-description=Windows下软件的作用描述
--windows-uac-admin=Windows下用户可以使用管理员权限来安装
--linux-onefile-icon=Linux下的图标位置
--onefile 像pyinstaller一样打包成单个exe文件
--include-package=复制比如numpy,PyQt5 这些带文件夹的叫包或者轮子
--include-module=复制比如when.py 这些以.py结尾的叫模块