에러 발생
./test.sh
테스트 파일을 실행하는데,
mypy를 실행하는 순서에서 아래와 같은 에러가 발생했다.
mypy란?
mypy는 python 코드의 정적타입 검사를 하는 도구이다.
타입이 올바르게 사용되었는지 사전에 발견해서 코드 품질을 높이는 도구이다.
- 타입검사 : mypy코드의 타입 주석을 확인하고, 예상된 타입과 실제타입이 일치한지 검사한다.
- 호환성 검사 : 타입검사를 토대로 코드가 기대하는 방식대로 동작하는 지 검사한다.
위와 같은 검사를 위해서 기본적으로 프로젝트의 모든 python 파일을 검사하려고 하는 게 특징이다.
에러 원인
venv는 프로젝트 내 python 패키지를 독립적으로 설치하고 관리하는 가상환경이다.
이 가상환경에는 프로젝트의 외부 라이브러리나 종속성 패키지들도 포함이 된다.
외부라이브러리의 코드는 완벽하게 타입이 명시되어있지 않는 경우도 있는데,
mypy가 venv 디렉토리 내에 파일들을 탐색하면서 불필요한 타입오류가 발생하게 될 수 있다.
위에 발생한 에러도 같은 이유다.
해결 방법
mypy가 venv 디렉토리 내의 파일들을 검사하지 않도록 하기 위해서는 exclude 옵션을 사용하면 된다.
나같은 경우에는 pyproject.toml 파일을 통해 빌드 시스템을 관리하고 있고,
venv/.*를 exclude 처리하여 mypy가 가상환경의 파일들을 무시하도록 설정하여 불필요한 타입오류 문제를 해결했다.
[tool.mypy]
disallow_subclassing_any = false
exclude = "fabfile|venv/.*" <-- venv 디렉토리 내 모든 파일
ignore_missing_imports = true
implicit_reexport = true
plugins = "pydantic.mypy"
python_version = "3.11"
show_error_codes = true
strict = true
exclude 처리 후 테스트 실행파일을 정상적으로 완료했다.
'프로그래밍 > Python' 카테고리의 다른 글
black으로 코드스타일 포매팅 (0) | 2025.02.11 |
---|---|
언더스코어 인 파이썬 ( 파이썬 객체지향적으로 사용하기 ) (1) | 2025.01.30 |
Pydantic.BaseSetting을 사용한 환경변수 관리 (0) | 2025.01.26 |
Error:Field validation for *** failed on the 'required' (0) | 2024.06.12 |
딕셔너리 활용하기 (1) | 2023.06.03 |