EXE Web API von Python

Einführung

Von Zeit zu Zeit werden wir möglicherweise gebeten, alle folgenden Punkte zu erfüllen:

Ich denke, es gibt verschiedene Möglichkeiten, aber

  1. Ermöglichen, dass AI-Funktionen als Web-API im Python-Webframework verfügbar gemacht werden
  2. Konvertieren Sie das Python-Skript in eine EXE-Datei und bündeln Sie es mit der App selbst.
  3. Sie können dies erreichen, indem Sie EXE über die App selbst ausführen.

Dieses Mal werden wir verwenden:

(Bei FastAPI x uvicorn gab es übrigens zum 30. März 2020 ein Problem. [Https://github.com/pyinstaller/pyinstaller/pull/4664](https://github.com/pyinstaller/pyinstaller/ ziehen / 4664)))

Verfahren

Installieren Sie den Kolben und den PyInstaller.

An der Eingabeaufforderung usw.

pip install flask pyinstaller

Erstellen Sie eine Python-Datei, die die Web-API verfügbar macht.

main.py


from flask import Flask
app = Flask(__name__)

@app.route('/predict')
def predict():
  """
Absicht der API, die Vorhersage durch AI zurückzugeben
  """
  return {'result': 'Prediction by AI.'}

if __name__ == '__main__':
  app.run()

Wechseln Sie in das Verzeichnis mit den oben genannten Dateien

pyinstaller main.py --onefile

Es gibt "main.exe" im "dist" -Verzeichnis, also lass es uns versuchen.

dist\main.exe
Traceback (most recent call last):
  File "site-packages\PyInstaller\loader\rthooks\pyi_rth_pkgres.py", line 13, in <module>
  File "c:\users\user\appdata\local\programs\python\python37\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 623, in exec_module
    exec(bytecode, module.__dict__)
  File "site-packages\pkg_resources\__init__.py", line 86, in <module>
ModuleNotFoundError: No module named 'pkg_resources.py2_warn'
[24508] Failed to execute script pyi_rth_pkgres

Wenn Sie "ModuleNotFoundError" wie oben erhalten, bearbeiten Sie die Datei "main.spec", die in derselben Hierarchie wie "main.py" generiert wurde, mit einem Texteditor. Geben Sie insbesondere den Modulnamen an, der in "hiddenimports" nicht gefunden wurde.

main.spec


             # --Abkürzung--
             hiddenimports=[],
             # --Abkürzung--

↓ Ändern und speichern Sie wie folgt.

main.spec


             # --Abkürzung--
             hiddenimports=['pkg_resources.py2_warn'],
             # --Abkürzung--

Führen Sie pyinstaller mit der geänderten Spezifikationsdatei anstelle der py-Datei aus.

pyinstaller main.spec --onefile

Überprüfen Sie den Betrieb erneut.

dist\main.exe

Wenn Sie es besuchen, können Sie grob bestätigen, dass die Web-API geöffnet ist. browser.png

Tatsächlich wird diese EXE-Datei von einer Anwendung wie C # ausgeführt (Prozessverwaltung erforderlich) und der HTTP-Client greift von derselben Anwendung aus darauf zu.

Recommended Posts

EXE Web API von Python
Web-API mit Python + Falcon
Klicken Sie auf die Web-API in Python
[Python] Webanwendung von 0! Hands-on (3) -API-Implementierung-
Python: Lesen von JSON-Daten von der Web-API
Vorgehensweise zur Verwendung der WEG-API von TeamGant (mit Python)
Die erste Web-App, die von Python-Anfängern erstellt wurde
Explosive Geschwindigkeit mit Python (Flasche)! Web-API-Entwicklung
Primzahlbeurteilung durch Python
Django Python Web Framework
Visualisierungsnotiz von Python
Kommunikationsverarbeitung durch Python
Evernote-API in Python
Liste der Python-APIs für OpenCV3
Beamformer-Antwort von Python
C-API in Python 3
TensorFlow API-Memo (Python)
Wissensdatenbank + Web-API, die von NoSQL x PaaS betrieben wird
Sprachdateierkennung durch Google Speech API v2 mit Python
[Python] [Gracenote Web API] Eine kleine Anpassung von Pygn
Hit Mastodons API in Python
Verwenden Sie die Trello-API mit Python
Spracherkennung durch Python MFCC
Web Scraping mit Python + JupyterLab
AWS CDK-Lambda + API-Gateway (Python)
Verwenden Sie die Twitter-API mit Python
Newcomer Trainingsprogramm von Python
Parametereinstellung durch Python Configparser
Pin Python von Conda verwaltet
Rufen Sie die Bing Image Search API v5 von Python auf, um Bilder zu sammeln
Zusammenfassung des Python-Webprogrammierartikels
Keyword-Extraktion mit MeCab (Python)
Zahlen durch 3 Ziffern trennen (Python)
Vergleich von 4 Arten von Python-Webframeworks
Bildersammlung mit Web Scraping
Markov-Schaltmodell von Python
Web Scraping mit Selenium (Python)
Bildverarbeitung mit Python (Pillow)
Python wurde von C-Programmierern gestartet
Blender Python API in Houdini (Python 3)
Rufen Sie die API mit python3 auf.
Webanwendung mit Python + Flask ② ③
Verwenden Sie die Unterschall-API mit Python3
Google Drive API-Tipps (Python)
Web Scraping Anfänger mit Python
Optimieren Sie die Websuche mit Python
Einzeiliges Web-Scraping mit tse
Plattform (OS) Beurteilung durch Python
Verwenden Sie die e-Stat-API von Python
Webanwendung mit Python + Flask ④
Sortieren nach Datum in Python
[Python / Django] Erstellen Sie eine Web-API, die im JSON-Format antwortet
[FastAPI] Erste Schritte mit FastAPI, einem ASGI-Webframework von Python
Spielen Sie, indem Sie die Riot Games-API in Python First Half drücken
Pythonweb Scraping-Get-Elemente in loser Schüttung