one . pyinstaller and Nuitka Use feeling
1.1 Use requirements
This is also due to the needs of the project , Want to python Code conversion exe Procedure , After looking for it for a long time , Found it 2 Both can be right python Tools for project packaging ——pyintaller and nuitka.
this 2 Both tools can meet the needs of the project at the same time ：
Hidden source code . there pyinstaller Yes by setting key To encrypt the source code ; and nuitka Will python Source code conversion C++（ What we get here is binary pyd file , Decompilation is prevented ）, Then compile it into an executable file .
Convenient transplantation . Convenient for users , No more installation python ah , Third party packages or something .
1.2 Use feeling
2 The biggest feeling after using a tool is ：
pyinstaller Poor experience !
A deep learning project is finally turned into exe It's close 3 individual G Size of （pyinstaller Is to package the entire running environment ）, yes , You heard me right , One EXE have 3 individual G!
Packing super slow , Start super slow .
nuitka Really fragrant !
Same project , Generated exe only 7M!
Packing super fast （1min within ）, Start super fast .
two . Nuitka Installation and use of
2.1 nuitka Installation of
Direct utilization pip Ready to install ：pip install Nuitka
download vs2019(MSVS) perhaps MinGW64, Anyway C++ Compiler for , Whatever .
2.2 Use process
For projects that rely on more packages from third parties （ Like need import
torch,tensorflow,cv2,numpy,pandas,geopy wait ） for , The best way to package here is to convert only your own code into C++, Regardless of these large third-party packages !
Here's me demo A directory structure for （ Used here pytq5 Framework written interface ）：
├─utils// Source code 1 folder ├─src// Source code 2 folder ├─logo.ico//demo Icon for └─demo.py//main file
Use the following command （ debugging ） Direct generation exe file ：
nuitka --standalone --show-memory --show-progress --nofollow-imports --plugin-enable=qt-plugins --follow-import-to=utils,src --output-dir=out --windows-icon-from-ico=./logo.ico demo.py
Here is a brief introduction to my above nuitka Command of ：
--standalone： Easy to transplant to other machines , No more installation python
--show-memory --show-progress： Show the progress of the whole installation
--nofollow-imports： Do not compile all of the import, such as keras,numpy Something like that .
--plugin-enable=qt-plugins： I use it here pyqt5 To make the interface , here nuitka Has its corresponding plug-in .
--follow-import-to=utils,src： Need to compile into C++ Code specified 2 A folder containing source code , Use here , To separate .
--output-dir=out： Specifies that the output result path is out.
--windows-icon-from-ico=./logo.ico： Specify generated exe The icon for is logo.ico This icon , Here is a recommended way to turn the picture into ico Format file web site （ Bitworm ）.
--windows-disable-console： function exe Cancel pop-up . We didn't put it here because we still need debugging , Maybe there's something wrong with it .
after 1min After compiling , You can see it in your directory ：
├─utils// Source code 1 folder ├─src// Source code 2 folder ├─out// Generated exe folder ├─demo.build └─demo.dist
└─demo.exe// Generated exe file ├─logo.ico//demo Icon for └─demo.py//main file
Of course, here you will find that the real operation exe When , Will report an error ：no module named torch,cv2,tensorflow Wait, these didn't turn into C++ Third party package .
We need to find these bags here （ Mine is in software\python3.7\Lib\site-packages lower ） copy （ such as numpy,cv2 This folder ） reach demo.dist Under path .
thus ,exe It works perfectly ! Not yet. You can add friends to study together