- Nuitka环境安装 ①下载gcc文件。提取码:8888百度网盘 请输入提取码 ②解压nuitka1.0.6版本,我们解压64位的。 ③设置环境变量 ④检测一下
gcc.exe --version
- 安装nuitka
pip install nuitkapip install ordered-set
- 防止环境变量不生效,重启项目、重启电脑。
- 打包常用命令。使用nuitka --help可查看所有命令
--mingw64 #默认为已经安装的vs2017去编译,否则就按指定的比如mingw(官方建议)--standalone 独立环境,这是必须的(否则拷给别人无法使用)--windows-disable-console 没有CMD控制窗口--output-dir=out 生成exe到out文件夹下面去--show-progress 显示编译的进度,很直观--show-memory 显示内存的占用--enable-plugin=pyside6--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文件(2021年我会再出教程来解释)--include-package=复制比如numpy,PyQt5 这些带文件夹的叫包或者轮子--include-module=复制比如when.py 这些以.py结尾的叫模块
- 常规打包一段简单的pyside代码
from PySide6.QtCore import QRectfrom PySide6.QtWidgets import QApplication,QWidget, QPushButton, QLineEditclass Form(QWidget): def __init__(self, parent=None): super(Form, self).__init__(parent=parent) self.setWindowTitle("首次") self.resize(320, 180) # 按钮 button = QPushButton(self) button.setText("提交") # 位置(x,y,width,height) button.setGeometry(QRect(150, 50, 100, 50)) button.clicked.connect(lambda: print(edit.text())) # 单行输入框 edit = QLineEdit(self) edit.setPlaceholderText("请输入密钥") # 位置(x,y,width,height) edit.setGeometry(QRect(10, 10, 100, 50))if __name__ == '__main__': app = QApplication([]) form = Form() form.show() app.exec()
打包命令:nuitka --mingw64 --standalone --show-progress --show-memory --output-dir=out --enable-plugin=pyside6 main.py
会发现无法下载GitHub的文件,我们手动下载一下,然后放到提示的目录中 然后一路yes即可打包完成 打开打包后的exe文件:秒开!(为了调试方便,我这里没有隐藏黑窗口) - 升级:只编译我们自己编写的代码。引用的代码全部使用pyd来访问。 在根目录新建文件夹need用来存放我们自己的代码 最外层只放一个启动类main.py 打包:跟第5步打包命不同,在基础上加了:--nofollow-imports --follow-import-to=need
nuitka --mingw64 --standalone --show-progress --show-memory --output-dir=out --enable-plugin=pyside6 --nofollow-imports --follow-import-to=need main.py
打包的速度的成功率将会高很多。 - 包缺失
pip install numpy
现在我们在上一步的代码中加入一句: 然后进行打包,并启动,发现闪退,说明打的包有问题 我们使用黑窗口打开刚刚打包好的main.exe 我们从venv/lib/site-packages下找到numpy包,复制到disk目录中 然后再执行main.exe即可正常运行所有缺失的包都可以这样处理!!! - 用 enigmaprotector 再次打包成单个文件比较好 略
本文转载自: https://blog.csdn.net/wenxingchen/article/details/128112544
版权归原作者 苍穹之跃 所有, 如有侵权,请联系我们删除。
版权归原作者 苍穹之跃 所有, 如有侵权,请联系我们删除。