이미지 또는 비디오 내의 대상 항목 수를 계산하는 샘플 앱입니다.
Python과 pip가 설치되어 있는지 확인하세요.
python --version
pip --version
루트 디렉터리에서 다음 명령을 실행하여 종속성을 설치합니다. pip install -r requirements.txt
다음 명령을 사용하여 앱을 실행할 수 있습니다: python -m uvicorn src.api.index:app --reload
실행한 후에는 http://127.0.0.1:8000/docs
로 이동하여 대화형 API 문서를 볼 수 있습니다.
이 저장소에서 코드를 올바르게 실행하고 개발하려면 먼저 수행해야 할 몇 가지 단계가 있습니다.
다음은 이 저장소의 파이프라인 작업/테스트를 시작하기 전에 수행해야 하는 단계 목록입니다.
프로젝트에는 이 프로젝트와의 상호 작용을 훨씬 원활하게 만드는 명령을 실행하는 데 사용할 수 있는 Makefile
( Windows에서는 지원되지 않음! )이 함께 제공됩니다. 이름에 공백이 있는 폴더는 문제를 일으킬 수 있다는 점에 유의하세요.
다음을 통해 사용 가능한 모든 옵션을 볼 수 있습니다.
$: 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
참고 :
Windows
사용하는 경우 일부 작업을 위해Makefile
의 일부인 명령을 어느 정도 복사하고 수정해야 할 수도 있습니다.
현재/새로운 기능을 작업하기 위해 Docker를 사용하여 새 컨테이너를 시작하고 로컬 개발 프로세스를 시작할 수 있습니다.
Docker 이미지를 빌드하려면 다음 단계를 따라야 합니다.
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
direnv
설치되어 있고 변경 사항이 적용되도록 허용 해야 하기 때문에direnv
오류가 표시됩니다.
direnv
변경 허용 # Accept the changes
$: direnv allow
direnv: loading /opt/program/.envrc
init
명령을 사용하여 쉽게 수행할 수 있습니다. $: make init
그러면 다음 작업이 수행됩니다.
direnv
에서 사용하는 .envrc
파일을 초기화합니다.direnv
수정을 허용하려면 direnv allow
적용하십시오.pip
를 통해 패키지 요구 사항 설치pre-commit
설치합니다.git-flow
설치하세요.이러한 단계를 통해 사용자는 Docker 내에서 새로운 기능을 개발할 수 있으며, 이를 통해 개발자는 정확히 동일한 도구 세트를 더 쉽게 사용할 수 있습니다.
이 프로젝트에는 Docker를 통해 API 엔드포인트를 시작하고 중지하기 위한 즉시 사용 가능한 솔루션이 함께 제공됩니다.
API 엔드포인트로 컨테이너를 시작하려면 다음 명령을 실행해야 합니다.
# Start API service
make api-start
이 서비스는 내부 포트 80
로컬 호스트의 포트 8090
에 노출하는 Docker 컨테이너를 시작합니다. 이미지가 빌드되고 컨테이너가 시작되면 다음 명령을 사용하여 서비스의 기본 페이지로 이동할 수 있습니다.
# Go the URL of the API endpoint
make api-web
그러면 사용자가 다음 URL로 연결됩니다: http://localhost:8090/docs
API 서비스를 중지 하려면 다음 명령을 실행할 수 있습니다.
# Stop the API service
make api-stop
새로운 기능 등으로 FastAPI를 사용자 정의하면 이러한 변경 사항이 위의 URL에 자동으로 표시됩니다.
위의 섹션과 유사하게, all-start
및 all-stop
이라는 두 가지 명령을 사용하여 모든 서비스를 한 번에 가동하거나 종료할 수 있습니다.
API 서비스와 로컬 개발을 모두 실행하려면 다음을 실행할 수 있습니다.
make all-start
이 명령은 두 서비스를 모두 실행하며 로컬 개발을 위해 컨테이너에 로그인할 수 있을 뿐만 아니라 브라우저를 통해 API에 연결할 수도 있습니다.
마찬가지로 모든 서비스를 스핀다운하려면 다음을 실행하면 됩니다.
make all-stop
이렇게 하면 두 서비스가 모두 중지되고 사용되지 않는 Docker 컨테이너가 삭제됩니다.
단위 테스트는 소스 코드와 함께 src
폴더에서 찾을 수 있습니다. 테스트 파일은 _test
로 끝납니다. 다음 명령은 모든 테스트를 실행합니다.
python -m pytest -v -s
-v
인수는 자세한 출력을 위한 것입니다. -s
인수는 인쇄 명령문이 콘솔에 인쇄되도록 캡처 모드를 끄는 것입니다.
이를 실행하기 위한 Makefile 명령도 존재합니다. make test
참조하세요.
다음은 이 프로젝트와 상호 작용할 때 도움이 될 수 있는 명령 목록입니다.
모든 Docker 컨테이너를 나열합니다.
docker ps -a
로컬 개발을 용이하게 하기 위해 VS Code용 Visual Studio Code Dev Containers 확장을 설치할 수 있습니다. 이를 통해 로컬 개발 Docker 컨테이너에 연결하고 기능을 보다 쉽게 개발할 수 있습니다.