파이썬은 기본적으로 동적 타입 언어이기 때문에 코드 작성 중에 타입 관련 오류가 쉽게 발생할 수 있다. 코딩은 빠르게 할 수 있지만 코드가 조금만 복잡해져도 생각하지 못한 오류가 Runtime시 발생해서 머리가 아프다. 그래서 Typescript 같은 정적타입 체크 기능이 있으면 좋겠다는 생각이 들어서 찾아봤다.
mypy, mypyc, pytype 등이 있었지만 지금 사용하고 있는 Intellij에서 쉽게 사용할 수 있는 pyright가 제일 나은것 같다. 그래서 Pyright에 대한 내용을 정리해보고자 한다.
Pyright란?
Pyright는 Microsoft에서 개발한 Python 정적 타입 검사기이다. PEP 484의 타입 힌팅(type hinting) 표준을 따르며, 파이썬 코드에서 타입 오류를 빠르게 탐지할 수 있는 도구이다. 타입 힌트는 파이썬의 선택적인 기능이지만, 이를 활용하면 코드 가독성과 안정성이 크게 향상된다. Pyright는 가벼운 속도와 높은 정확성으로 인해 파이썬 개발 커뮤니티에서 많은 사랑을 받고 있다.
Pyright의 주요 기능
- 빠른 타입 검사: Pyright는 성능이 뛰어나서 대규모 코드베이스에서도 빠르게 타입 검사를 수행할 수 있다.
- 정확한 타입 추론: 타입 힌트가 없는 코드에서도 Pyright는 높은 수준의 타입 추론 기능을 제공하여 타입 오류를 감지할 수 있다.
- VS Code 통합: Pyright는 VS Code와 완벽하게 통합되어 있으며, 실시간으로 코드 오류를 탐지해 표시해 준다.
- 커스텀 설정 가능: 프로젝트에 맞는 타입 검사 규칙을 설정 파일(
pyrightconfig.json
)을 통해 쉽게 구성할 수 있다. - 파이썬 서브셋 지원: Pyright는 마이크로파이썬, 사이파이와 같은 파이썬 서브셋을 지원하여 다양한 환경에서 사용할 수 있다.
Pyright 설치 및 사용 방법
Pyright는 명령줄 도구로도 사용할 수 있으며, VS Code와 같은 에디터에서도 사용할 수 있다. 먼저 Pyright를 설치하는 방법부터 살펴보자.
1. Pyright 설치
Pyright는 다음 명령어로 간단하게 설치할 수 있습니다.
pip install pyright
설치가 완료되면 명령줄에서 다음과 같이 Pyright를 실행할 수 있다.
pyright
이 명령어는 현재 디렉터리의 파이썬 파일을 스캔하여 타입 오류를 검사한다.
2. VS Code에서 Pyright 설정하기
Pyright는 VS Code 확장 프로그램으로 제공되어 편리하게 설치할 수 있다. 확장을 설치한 후, 파이썬 파일을 열면 Pyright가 자동으로 코드의 타입을 검사하고 오류를 표시한다.
3. Intellij에서 Pyright 설정하기
Intellij에서도 plugin이 제공되어 편리하게 사용할 수 있다.
1) Intellij plugin 설치
Settings > Plugins에서 pyright
를 검색 후 설치한다.
2) Settings > Tools > Pyright(Project) 설정
Pyright의 Executable을 설정해주자. (가상환경의 pyright 실행파일)
`which pyright`를 실행하면 해당 경로를 출력해준다.
이렇게 설정한 이후 파일 저장 시 오류가 발생하면 빨간색으로 표시를 해준다.
[에러 내용]
4. 설정 파일을 사용한 커스텀 타입 검사
프로젝트에 맞는 타입 검사를 위해 pyrightconfig.json
파일을 사용해 설정을 커스터마이징할 수 있다. 예를 들어, 특정 디렉터리만 검사하거나, 검사에서 제외하고 싶은 파일을 지정할 수 있다.
{
"include": ["src"],
"exclude": ["tests", "migrations"],
"typeCheckingMode": "strict"
}
include
: 타입 검사를 수행할 디렉터리나 파일을 지정한다.exclude
: 타입 검사를 제외할 디렉터리나 파일을 지정한다.typeCheckingMode
: 타입 검사 모드를 설정할 수 있으며, 기본값은 "basic"이지만, 더 엄격한 검사를 위해 "strict" 모드를 사용할 수 있다.
Pyright와 MyPy 비교
Pyright와 비슷한 역할을 하는 도구로는 MyPy가 있다. MyPy 역시 정적 타입 검사기로 널리 사용되고 있다. Pyright와 MyPy의 주요 차이점은 다음과 같다.
비교 항목 | Pyright | MyPy |
---|---|---|
성능 | 매우 빠름 | 중간 |
IDE 통합 | VS Code, Intellij와 완벽하게 통합 | IDE 통합 미흡 |
타입 추론 | 뛰어난 추론 기능 | 추론 기능이 제한적 |
설정 용이성 | 설정 파일로 커스텀 가능 | 설정 파일 제공 |
커뮤니티 | 마이크로소프트 지원, 활성화된 커뮤니티 | 오픈소스 커뮤니티 |
Pyright는 특히 성능과 VS Code와의 통합 면에서 더 많은 이점을 제공한다. 하지만 두 도구 모두 파이썬에서 정적 타입 분석을 제공한다는 공통점이 있다.