【Python】Nuitka打包exe(32位)--防止源代码被反编译--实战PySide2项目--遇坑填坑(图文教程&超详细)

大家都知道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

鼠标右键管理员身份运行Anaconda Prompt

【Python】Nuitka打包exe(32位)--防止源代码被反编译--实战PySide2项目--遇坑填坑(图文教程&超详细)_第1张图片

 【Python】Nuitka打包exe(32位)--防止源代码被反编译--实战PySide2项目--遇坑填坑(图文教程&超详细)_第2张图片

  

输入以下命令安装nuitka

pip install nuitka

【Python】Nuitka打包exe(32位)--防止源代码被反编译--实战PySide2项目--遇坑填坑(图文教程&超详细)_第3张图片

 

输入以下命令安装PySide2

pip install PySide2

如果安装太慢,可以用这个:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyside2

【Python】Nuitka打包exe(32位)--防止源代码被反编译--实战PySide2项目--遇坑填坑(图文教程&超详细)_第4张图片

安装成功,开始进行打包

【Python】Nuitka打包exe(32位)--防止源代码被反编译--实战PySide2项目--遇坑填坑(图文教程&超详细)_第5张图片

 cd到"项目"目录下

【Python】Nuitka打包exe(32位)--防止源代码被反编译--实战PySide2项目--遇坑填坑(图文教程&超详细)_第6张图片

输入以下命令开始进行打包

nuitka --standalone --windows-disable-console --windows-icon-from-ico=favicon.ico --enable-plugin=pyside2 --include-data-dir=./image=./image main.py

【Python】Nuitka打包exe(32位)--防止源代码被反编译--实战PySide2项目--遇坑填坑(图文教程&超详细)_第7张图片

发现卡在这里了

【Python】Nuitka打包exe(32位)--防止源代码被反编译--实战PySide2项目--遇坑填坑(图文教程&超详细)_第8张图片

选中这个链接,ctrl+c复制,复制到迅雷下载,然后关闭此窗口。

【Python】Nuitka打包exe(32位)--防止源代码被反编译--实战PySide2项目--遇坑填坑(图文教程&超详细)_第9张图片

【Python】Nuitka打包exe(32位)--防止源代码被反编译--实战PySide2项目--遇坑填坑(图文教程&超详细)_第10张图片

下载完成后,解压,把mingw32文件夹复制到c盘

【Python】Nuitka打包exe(32位)--防止源代码被反编译--实战PySide2项目--遇坑填坑(图文教程&超详细)_第11张图片

配置环境变量

鼠标右键"此电脑",选择“属性”,选择"高级系统设置",选择"高级",选中“Path”变量,点击"编辑"

【Python】Nuitka打包exe(32位)--防止源代码被反编译--实战PySide2项目--遇坑填坑(图文教程&超详细)_第12张图片

点击"新建",添加变量值:“C:\mingw32\bin”,添加好记得点确定

【Python】Nuitka打包exe(32位)--防止源代码被反编译--实战PySide2项目--遇坑填坑(图文教程&超详细)_第13张图片

配置好环境变量,重新打开Anaconda Prompt 

输入以下命令查询mingw是否配置正确。

gcc -v

如跟下图显示一致,则配置没有问题。

【Python】Nuitka打包exe(32位)--防止源代码被反编译--实战PySide2项目--遇坑填坑(图文教程&超详细)_第14张图片

输入以下命令,重新开始打包

nuitka --standalone --windows-disable-console --windows-icon-from-ico=favicon.ico --enable-plugin=pyside2 --include-data-dir=./image=./image main.py

 【Python】Nuitka打包exe(32位)--防止源代码被反编译--实战PySide2项目--遇坑填坑(图文教程&超详细)_第15张图片

输入"yes",按"enter"键,安装ccache,以后再次编译会快很多。也可以选择不安装,不安装则输入"no"

【Python】Nuitka打包exe(32位)--防止源代码被反编译--实战PySide2项目--遇坑填坑(图文教程&超详细)_第16张图片  

 如果输入yes后,长时间卡着,老方法,复制链接到迅雷进行下载,下载好之后移动到指定目录

【Python】Nuitka打包exe(32位)--防止源代码被反编译--实战PySide2项目--遇坑填坑(图文教程&超详细)_第17张图片

这里可以看到打包完成了 ,打包好的exe在main.dist目录下

【Python】Nuitka打包exe(32位)--防止源代码被反编译--实战PySide2项目--遇坑填坑(图文教程&超详细)_第18张图片

  【Python】Nuitka打包exe(32位)--防止源代码被反编译--实战PySide2项目--遇坑填坑(图文教程&超详细)_第19张图片

运行,没有任何问题,打开的速度也很快。真正的体验到了Python的开发效率,C的运行速度。

放在虚拟机windows10、windows7、windows2008运行都没有发现任何问题。

 【Python】Nuitka打包exe(32位)--防止源代码被反编译--实战PySide2项目--遇坑填坑(图文教程&超详细)_第20张图片

本文使用的打包命令:

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结尾的叫模块

你可能感兴趣的:(Python,Nuitka,#,Nuitka打包exe,python)