Heim > Backend-Entwicklung > Python-Tutorial > Pythons Verpackungsartefakt – Nuitka!

Pythons Verpackungsartefakt – Nuitka!

WBOY
Freigeben: 2023-04-12 23:31:12
nach vorne
2123 Leute haben es durchsucht

1. Erfahrung mit Pyinstaller und Nuitka Vor langer Zeit habe ich zwei Tools gefunden, die Python-Projekte packen können: Pyintaller und Nuitka.

Pythons Verpackungsartefakt – Nuitka!

Diese beiden Tools können die Anforderungen des Projekts gleichzeitig erfüllen:

Den Quellcode ausblenden

. Der Pyinstaller verschlüsselt hier den Quellcode, indem er den Schlüssel festlegt; Nuitka konvertiert den Python-Quellcode in C++ (was Sie hier erhalten, ist eine binäre PID-Datei, die eine Dekompilierung verhindert) und kompiliert ihn dann in eine ausführbare Datei.

    Einfach zu verpflanzen
  • . Es ist für Benutzer bequem zu verwenden und es ist nicht erforderlich, Python, Pakete von Drittanbietern oder ähnliches zu installieren. 1.2 Nutzungserfahrung
  • Das größte Gefühl nach der Verwendung dieser beiden Tools ist: Die Erfahrung mit dem Pyinstaller ist sehr schlecht!

Die in ein Deep-Learning-Projekt konvertierte Exe ist fast 3G groß (pyinstaller packt die gesamte Laufumgebung

    ), ja, Sie haben es richtig gehört, eine EXE hat 3 A G!
  • Das Verpacken ist superlangsam und der Startvorgang ist superlangsam.
  • nuitka riecht so gut!
  • Für dasselbe Projekt ist die generierte Exe nur 7 MB groß!
  • Das Verpacken geht superschnell (innerhalb von 1 Minute) und der Start geht superschnell.
  • 2. Installation und Verwendung von Nuitka 2.1 Installation von Nuitka

  • Sie können es direkt mit pip installieren: pip install Nuitka

Laden Sie vs2019 (MSVS) oder MinGW64 herunter, das sind sowieso C++-Compiler, laden Sie sie einfach herunter.

    2.2 Nutzungsprozess
  • Für Projekte mit vielen von Drittanbietern abhängigen Paketen (z. B. die Notwendigkeit, Torch, Tensorflow, CV2, Numpy, Pandas, Geopy usw. zu importieren) ist die beste Möglichkeit zum Paketieren hier <span style="font-size: 15px;">pip install Nuitka</span>
  • Konvertieren Sie nur Ihren eigenen Code nach C++, unabhängig von diesen großen Paketen von Drittanbietern!

Das Folgende ist eine Verzeichnisstruktur meiner Demo (hier wird die vom pytq5-Framework geschriebene Schnittstelle verwendet):

├─utils//源码1文件夹├─src//源码2文件夹├─logo.ico//demo的图标└─demo.py//main文件
Nach dem Login kopieren
Verwenden Sie den folgenden Befehl (Debugging), um die Exe-Datei direkt zu generieren:
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
Nach dem Login kopieren
Hier ist eine kurze Einführung in meinen Nuitka-Befehl oben:

  • <span style="font-size: 15px;">--standalone</span>:方便移植到其他机器,不用再安装python
  • <span style="font-size: 15px;">--show-memory --show-progress</span>:展示整个安装的进度过程
  • <span style="font-size: 15px;">--nofollow-imports</span>:不编译代码中所有的import,比如keras,numpy之类的。
  • <span style="font-size: 15px;">--plugin-enable=qt-plugins</span>:我这里用到pyqt5来做界面的,这里nuitka有其对应的插件。
  • <span style="font-size: 15px;">--follow-import-to=utils,src</span>:需要编译成C++代码的指定的2个包含源码的文件夹,这里用<span style="font-size: 15px;">,</span>来进行分隔。
  • <span style="font-size: 15px;">--output-dir=out</span>:指定输出的结果路径为out。
  • <span style="font-size: 15px;">--windows-icon-from-ico=./logo.ico</span>:指定生成的exe的图标为logo.ico这个图标,这里推荐一个将图片转成ico格式文件的网站(比特虫)。
  • <span style="font-size: 15px;">--windows-disable-console</span>:运行exe取消弹框。这里没有放上去是因为我们还需要调试,可能哪里还有问题之类的。

经过1min的编译之后,你就能在你的目录下看到:

├─utils//源码1文件夹├─src//源码2文件夹├─out//生成的exe文件夹├─demo.build 
└─demo.dist └─demo.exe//生成的exe文件├─logo.ico//demo的图标└─demo.py//main文件
Nach dem Login kopieren

当然这里你会发现真正运行exe的时候,会报错:​<span style="font-size: 15px;">no module named torch,cv2,tensorflow</span>​等等这些没有转成C++的第三方包。

这里需要找到这些包(我的是在softwarepython3.7Libsite-packages下)复制(比如numpy,cv2这个文件夹)到​<span style="font-size: 15px;">demo.dist</span>​路径下。

至此,exe能完美运行啦!

Das obige ist der detaillierte Inhalt vonPythons Verpackungsartefakt – Nuitka!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:51cto.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage