Exemple d'application pour compter les éléments cibles dans une image ou une vidéo.
Assurez-vous que Python et pip sont installés.
python --version
pip --version
Depuis le répertoire racine, exécutez la commande suivante pour installer les dépendances : pip install -r requirements.txt
Vous pouvez exécuter l'application à l'aide de cette commande : python -m uvicorn src.api.index:app --reload
Une fois exécuté, vous pouvez accéder à http://127.0.0.1:8000/docs
pour afficher la documentation interactive de l'API.
Certaines étapes doivent être effectuées avant de pouvoir exécuter et développer correctement le code dans ce référentiel.
Voici une liste des étapes qui doivent être effectuées avant de commencer à travailler/tester les pipelines de ce référentiel :
Le projet est livré avec un Makefile
( non pris en charge sous Windows ! ) qui peut être utilisé pour exécuter des commandes qui rendront l'interaction avec ce projet beaucoup plus fluide. Gardez à l’esprit que les dossiers dont le nom contient des espaces peuvent causer des problèmes.
On peut voir toutes les options disponibles par :
$: 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
REMARQUE : Si vous utilisez
Windows
, vous devrez peut-être copier et modifier dans une certaine mesure les commandes qui font partie duMakefile
pour certaines tâches.
Afin de travailler sur les fonctionnalités actuelles/nouvelles, on peut utiliser Docker pour démarrer un nouveau conteneur et démarrer le processus de développement local.
Pour créer l'image Docker, il faut suivre les étapes suivantes :
Makefile
: # 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
On verra l’erreur
direnv
cardirenv
est installé et il faut permettre aux modifications de prendre effet.
direnv
# Accept the changes
$: direnv allow
direnv: loading /opt/program/.envrc
init
: $: make init
Cela effectuera les tâches suivantes :
.envrc
utilisé par direnv
.direnv allow
d'autoriser les modifications direnv
.pip
pre-commit
pour le linting et la vérification du code.git-flow
, autant que possible.Ces étapes permettent à l'utilisateur de développer de nouvelles fonctionnalités dans Docker, ce qui permet aux développeurs de disposer plus facilement du même ensemble d'outils disponibles.
Le projet est livré avec une solution prête à l'emploi pour démarrer et arrêter le point de terminaison de l'API via Docker.
Pour démarrer le conteneur avec le point de terminaison API, il faut exécuter la commande suivante :
# Start API service
make api-start
Ce service démarrera un conteneur Docker qui expose le port interne 80
au port 8090
de l'hôte local. Une fois l'image construite et un conteneur démarré, on peut accéder à la page principale du service en utilisant la commande suivante :
# Go the URL of the API endpoint
make api-web
Cela dirigera l'utilisateur vers l'URL suivante : http://localhost:8090/docs
Afin d' arrêter le service API, on peut exécuter la commande suivante :
# Stop the API service
make api-stop
Au fur et à mesure que l'on personnalise FastAPI avec de nouvelles fonctionnalités et plus encore, ces modifications seront automatiquement affichées dans l'URL ci-dessus.
Semblable aux sections ci-dessus, on peut démarrer ou arrêter tous les services en même temps à l'aide de 2 commandes, c'est-à-dire all-start
et all-stop
.
Afin de faire tourner à la fois le service API et celui du développement local , on peut exécuter :
make all-start
Cette commande exécutera les deux services et on pourra se connecter au conteneur pour le développement local, ainsi que se connecter à l'API via le navigateur.
De même, pour arrêter tous les services, on peut simplement exécuter :
make all-stop
Cela arrêtera les deux services et supprimera tous les conteneurs Docker inutilisés.
Les tests unitaires peuvent être trouvés dans le dossier src
à côté du code source. Les fichiers de test se terminent par _test
. La commande suivante exécutera tous les tests.
python -m pytest -v -s
L'argument -v
est destiné à une sortie détaillée. L'argument -s
sert à désactiver le mode de capture afin que les instructions d'impression soient imprimées sur la console.
Une commande Makefile existe également pour les exécuter. Voir make test
.
Voici une liste de commandes qui peuvent être utiles lors de l'interaction avec ce projet.
Répertoriez tous les conteneurs Docker :
docker ps -a
Pour faciliter le développement local, vous pouvez installer l'extension Visual Studio Code Dev Containers pour VS Code. Cela vous permettra de vous connecter au conteneur Docker de développement local et de développer plus facilement des fonctionnalités.