Aplicación de muestra para contar elementos objetivo dentro de una imagen o video.
Asegúrese de tener Python y pip instalados.
python --version
pip --version
Desde el directorio raíz ejecute el siguiente comando para instalar las dependencias: pip install -r requirements.txt
Puede ejecutar la aplicación usando este comando: python -m uvicorn src.api.index:app --reload
Una vez ejecutado, puede navegar a http://127.0.0.1:8000/docs
para ver la documentación interactiva de la API.
Hay algunos pasos que deben realizarse antes de poder ejecutar y desarrollar correctamente el código en este repositorio.
La siguiente es una lista de pasos que deben realizarse antes de comenzar a trabajar/probar las canalizaciones de este repositorio:
El proyecto viene con un Makefile
( ¡no compatible con Windows! ) que se puede usar para ejecutar comandos que harán que la interacción con este proyecto sea mucho más fluida. Tenga en cuenta que las carpetas con espacios en sus nombres pueden causar problemas.
Se pueden ver todas las opciones disponibles mediante:
$: 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
NOTA : Si está utilizando
Windows
, es posible que deba copiar y modificar en cierta medida los comandos que forman parte delMakefile
para algunas tareas.
Para trabajar en funciones actuales/nuevas, se puede utilizar Docker para iniciar un nuevo contenedor e iniciar el proceso de desarrollo local.
Para construir la imagen de Docker, se deben seguir los siguientes pasos:
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
Verá el error
direnv
porquedirenv
está instalado y debe permitir que los cambios surtan efecto.
direnv
. # Accept the changes
$: direnv allow
direnv: loading /opt/program/.envrc
init
: $: make init
Este realizará las siguientes tareas:
.envrc
utilizado por direnv
.direnv allow
para permitir modificaciones direnv
.pip
pre-commit
para la codificación y verificación de código.git-flow
, siempre que sea posible.Estos pasos permiten que el usuario pueda desarrollar nuevas funciones dentro de Docker, lo que facilita que los desarrolladores tengan exactamente el mismo conjunto de herramientas disponibles.
El proyecto viene con una solución lista para usar para iniciar y detener el punto final API a través de Docker.
Para iniciar el contenedor con el punto final API, se debe ejecutar el siguiente comando:
# Start API service
make api-start
Este servicio iniciará un contenedor Docker que expone el puerto interno 80
al puerto 8090
del host local. Una vez que se ha creado la imagen y se ha iniciado un contenedor, se puede ir a la página principal del servicio usando el siguiente comando:
# Go the URL of the API endpoint
make api-web
Esto dirigirá al usuario a la siguiente URL: http://localhost:8090/docs
Para detener el servicio API, se puede ejecutar el siguiente comando:
# Stop the API service
make api-stop
A medida que uno personaliza FastAPI con nuevas funciones y más, estos cambios se mostrarán automáticamente en la URL de arriba.
De manera similar a las secciones anteriores, uno puede activar o desactivar todos los servicios a la vez con la ayuda de 2 comandos, es decir all-start
y all-stop
.
Para activar tanto el servicio API como el de desarrollo local , se puede ejecutar:
make all-start
Este comando ejecutará ambos servicios y uno podrá iniciar sesión en el contenedor para el desarrollo local, así como conectarse a la API a través del navegador.
De manera similar, para desactivar todos los servicios, simplemente se puede ejecutar:
make all-stop
Esto detendrá ambos servicios y eliminará los contenedores Docker no utilizados.
Las pruebas unitarias se pueden encontrar en la carpeta src
junto con el código fuente. Los archivos de prueba terminan con _test
. El siguiente comando ejecutará todas las pruebas.
python -m pytest -v -s
El argumento -v
es para una salida detallada. El argumento -s
sirve para desactivar el modo de captura para que las declaraciones impresas se impriman en la consola.
También existe un comando Makefile para ejecutarlos. Ver make test
.
Aquí hay una lista de comandos que pueden ser útiles al interactuar con este proyecto.
Enumere todos los contenedores Docker:
docker ps -a
Para ayudar a facilitar el desarrollo local, puede instalar la extensión Visual Studio Code Dev Containers para VS Code. Esto le permitirá conectarse al contenedor Docker de desarrollo local y desarrollar funciones más fácilmente.