一、特點:
1、更快的啟動速度(大型程序最為明顯,有些人工智能的Python程序啟動耗時十幾秒以上,Nuitka打包后可提速到幾秒以內(nèi))
2、不易被殺毒軟件誤殺和報毒
3、源碼不會被反編譯(核心程序翻譯為 等效 的 Python C-API 之后,所有的變量名和函數(shù)名已經(jīng)被混淆為不可意會的字符串,原Python文件是徹底的逆向不出來了)
4、C-API代碼在執(zhí)行過程中更加流暢(Nuitka與Pyinstaller最大的區(qū)別是:Nuitka是集編譯工具與打包于一體的工具)
二、安裝
1、pip install Nuitka
2、安裝vs2022(MSVS)或者MinGW64的c++編譯器。
三、運行參數(shù)
--mingw64 #默認為已經(jīng)安裝的vs2017去編譯,否則就按指定的比如mingw(官方建議)
--standalone 獨立環(huán)境,這是必須的(否則拷給別人無法使用)
--windows-disable-console 沒有CMD控制窗口
--output-dir=out 生成exe到out文件夾下面去
--show-progress 顯示編譯的進度,很直觀
--show-memory 顯示內(nèi)存的占用
--enable-plugin=pyside6 打包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下軟件的產(chǎn)品信息
--windows-file-description=Windows下軟件的作用描述
--windows-uac-admin=Windows下用戶可以使用管理員權限來安裝
--linux-onefile-icon=Linux下的圖標位置
--onefile 像pyinstaller打包成單個exe文件
--include-package=復制比如numpy,PyQt5 這些帶文件夾的叫包或者輪子
--include-module=復制比如when.py 這些以.py結尾的叫模塊
–-include-package-data=包含給定軟件包名稱中的數(shù)據(jù)文件,等號后軟件包名稱。有的時候Nuitka并不能正確分析出一些Python軟件包所需要使用的數(shù)據(jù)文件,在運行程序時提示FileNotFoundError等錯誤,此時就需要使用該選項。如:--include-package-data=ultralytics
–-include-data-files= 按文件名包含數(shù)據(jù)文件,等號后的格式為<SRC=DEST>。SRC指的是文件夾的路徑,DEST指的是文件夾相對于打包結果的路徑,其中DEST只能使用相對路徑。如:--include-data-files=/Users/admin/Downloads/yolov5n.pt=./yolov5n.pt
-–include-data-dir= 包含文件夾中的數(shù)據(jù)文件,等號后的格式為<SRC=DEST>。使用方法與--include-data-files=相同。
--follow-import-to=MODULE/PACKAGE 如果使用該模塊,請遵循該模塊;如果是一個包,請遵循整個包。可以多次給定。默認為空。
四、命令參數(shù)
sage: __main__.py [--module] [--run] [options] main_module.py
Options:
--help 顯示此幫助消息并退出
--version 顯示錯誤報告的版本信息和重要詳細信息,然后退出。默認為關閉。
--module 創(chuàng)建一個可執(zhí)行的擴展模塊,而不是一個程序。默認為關閉。
--standalone 為輸出啟用獨立模式。這允許您在不使用現(xiàn)有Python安裝的情況下將創(chuàng)建的二進制文件傳輸?shù)狡渌麢C器。這也意味著它將變得更大。它暗示了以下選項:"--follow imports"和"--python flag=no_site"。默認為關閉。
--onefile 在獨立模式之上,啟用onefile模式。這意味著不是一個文件夾,而是一個壓縮的可執(zhí)行文件被創(chuàng)建和使用。默認為關閉。
--python-debug 是否使用調(diào)試版本。Default使用您正在使用的來運行Nuitka,很可能是非調(diào)試版本。
--python-flag=FLAG 要使用的Python標志。默認值是您用來運行Nuitka的內(nèi)容,這會強制執(zhí)行特定的模式。這些選項也存在于標準Python可執(zhí)行文件中。當前支持:"-S"(別名"no_site")、"static_hashes"(不使用哈希隨機化)、"no_warnings"(不給出Python運行時警告)、"-O"(別名為"no_assels")、"no_docstring"(不使用文檔字符串)、"-u"(別名為"unbuffered")和"-m"。默認為空。
--python-for-scons=PATH 如果使用Python3.3或Python3.4,請?zhí)峁┯糜赟cons的Python二進制文件的路徑。否則,Nuitka可以使用您運行Nuitka的軟件,也可以使用Windows注冊表中的Python安裝。在Windows上,需要Python 3.5或更高版本。在非Windows上,Python 2.6或2.7也可以。