Beispiel-App zum Zählen von Zielelementen in einem Bild oder Video.
Stellen Sie sicher, dass Python und Pip installiert sind.
python --version
pip --version
Führen Sie im Stammverzeichnis den folgenden Befehl aus, um die Abhängigkeiten zu installieren: pip install -r requirements.txt
Sie können die App mit diesem Befehl ausführen: python -m uvicorn src.api.index:app --reload
Nach der Ausführung können Sie zu http://127.0.0.1:8000/docs
navigieren, um die interaktive API-Dokumentation anzuzeigen.
Bevor der Code in diesem Repository ordnungsgemäß ausgeführt und entwickelt werden kann, müssen einige Schritte ausgeführt werden.
Im Folgenden finden Sie eine Liste der Schritte, die ausgeführt werden müssen, bevor mit der Arbeit/dem Test der Pipelines dieses Repositorys begonnen werden kann:
Das Projekt wird mit einem Makefile
geliefert ( wird in Windows nicht unterstützt! ), das zum Ausführen von Befehlen verwendet werden kann, die die Interaktion mit diesem Projekt viel reibungsloser machen. Beachten Sie, dass Ordner mit Leerzeichen im Namen Probleme verursachen können.
Alle verfügbaren Optionen können wie folgt angezeigt werden:
$: make
Available rules:
add-licenses Add licenses to Python files
all-start Starts both the API service and the local development service
all-stop Stops both the API service and the local development service
all-web Open up all web endpoints
api-build Build API image
api-start Start API image container
api-stop Stop API image container
api-web Open API in web browser
clean Removes artifacts from the build stage, and other common Python artifacts.
clean-build Remove build artifacts
clean-images Clean left-over images
clean-model-files Remove files related to pre-trained models
clean-pyc Removes Python file artifacts
clean-secrets Removes secret artifacts - Serverless
clean-test Remove test and coverage artifacts
create-environment Creates the Python environment
create-envrc Set up the envrc file for the project.
delete-environment Deletes the Python environment
delete-envrc Delete the local envrc file of the project
destroy Remove ALL of the artifacts + Python environments
docker-local-dev-build Build local development image
docker-local-dev-login Start a shell session into the docker container
docker-local-dev-start Start service for local development
docker-local-dev-stop Stop service for local development
docker-prune Clean Docker images
git-flow-install Install git-flow
init Initialize the repository for code development
lint Run the ' pre-commit ' linting step manually
pip-upgrade Upgrade the version of the ' pip ' package
pre-commit-install Installing the pre-commit Git hook
pre-commit-uninstall Uninstall the pre-commit Git hook
requirements Install Python dependencies into the Python environment
show-params Show the set of input parameters
sort-requirements Sort the project packages requirements file
streamlit-app-build Build Streamlit App image
streamlit-app-start Start Streamlit App image container
streamlit-app-stop Stop Streamlit App image container
streamlit-app-web Open Streamlit App in web browser
test Run all Python unit tests with verbose output and logs
HINWEIS : Wenn Sie
Windows
verwenden, müssen Sie möglicherweise die Befehle, die Teil desMakefile
sind, für einige Aufgaben kopieren und in gewissem Umfang ändern.
Um an aktuellen/neuen Features zu arbeiten, kann man mit Docker einen neuen Container starten und den lokalen Entwicklungsprozess starten.
Um das Docker-Image zu erstellen, müssen die folgenden Schritte ausgeführt werden:
Makefile
aus: # Go the project's directory
cd /path/to/directory
# Build the Docker iamge and start a container
make docker-local-dev-start
# Log into the container
make docker-local-dev-login
# Log into the container
➜$: make docker-local-dev-login
direnv: error /opt/program/.envrc is blocked. Run ` direnv allow ` to approve its content
Der
direnv
Fehler wird angezeigt, dadirenv
installiert ist und man zulassen muss, dass die Änderungen wirksam werden.
direnv
# Accept the changes
$: direnv allow
direnv: loading /opt/program/.envrc
init
-Befehl: $: make init
Dadurch werden folgende Aufgaben erledigt:
direnv
verwendete .envrc
Datei.direnv allow
an, um direnv
Änderungen zu ermöglichen.pip
pre-commit
für Code-Linting und Code-Überprüfung.git-flow
.Diese Schritte ermöglichen es dem Benutzer, neue Funktionen in Docker zu entwickeln, was es für Entwickler einfacher macht, genau die gleichen Tools zur Verfügung zu haben.
Das Projekt enthält eine sofort einsatzbereite Lösung zum Starten und Stoppen des API-Endpunkts über Docker.
Um den Container mit dem API-Endpunkt zu starten, muss man den folgenden Befehl ausführen:
# Start API service
make api-start
Dieser Dienst startet einen Docker-Container, der den internen Port 80
für den Port 8090
des lokalen Hosts verfügbar macht. Sobald das Image erstellt und ein Container gestartet wurde, kann man mit dem folgenden Befehl zur Hauptseite des Dienstes wechseln:
# Go the URL of the API endpoint
make api-web
Dadurch wird der Benutzer zur folgenden URL weitergeleitet: http://localhost:8090/docs
Um den API-Dienst zu stoppen , kann man den folgenden Befehl ausführen:
# Stop the API service
make api-stop
Wenn man die FastAPI mit neuen Funktionen und mehr anpasst, werden diese Änderungen automatisch in der URL von oben angezeigt.
Ähnlich wie in den Abschnitten oben kann man mit Hilfe von zwei Befehlen, nämlich all-start
und all-stop
, alle Dienste gleichzeitig hoch- oder herunterfahren.
Um sowohl den API -Dienst als auch den für die lokale Entwicklung hochzufahren, kann man Folgendes ausführen:
make all-start
Dieser Befehl führt beide Dienste aus und man kann sich für die lokale Entwicklung beim Container anmelden und über den Browser eine Verbindung zur API herstellen.
Um alle Dienste herunterzufahren, kann man einfach Folgendes ausführen:
make all-stop
Dadurch werden beide Dienste gestoppt und alle nicht verwendeten Docker-Container gelöscht.
Unit-Tests finden Sie neben dem Quellcode im Ordner src
. Testdateien enden mit _test
. Der folgende Befehl führt alle Tests aus.
python -m pytest -v -s
Das Argument -v
dient der ausführlichen Ausgabe. Das Argument -s
dient zum Ausschalten des Erfassungsmodus, damit Druckanweisungen auf der Konsole ausgegeben werden.
Es gibt auch einen Makefile-Befehl, um diese auszuführen. Siehe make test
.
Hier ist eine Liste von Befehlen, die bei der Interaktion mit diesem Projekt hilfreich sein können.
Listen Sie alle Docker-Container auf:
docker ps -a
Um die lokale Entwicklung zu erleichtern, können Sie die Visual Studio Code Dev Containers-Erweiterung für VS Code installieren. Dadurch können Sie eine Verbindung zum lokalen Entwicklungs-Docker-Container herstellen und einfacher Funktionen entwickeln.