Von Zeit zu Zeit werden wir möglicherweise gebeten, alle folgenden Punkte zu erfüllen:
Ich denke, es gibt verschiedene Möglichkeiten, aber
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)))
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.
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