프로그래밍/Python

mypy에서 가상 환경 파일 무시하기: venv 디렉토리 제외 설정 방법

코줍 2024. 8. 21. 22:55

에러 발생

./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 처리 후 테스트 실행파일을 정상적으로 완료했다.