파이썬은 다이나믹 타이핑 언어이기 때문에 런타임시간에 자료형이 결정된다. 그래서 코드편집기에서 정적 타이핑 언어처럼 코딩하는 도중에 변수가 어떤 타입이 될지 미리 평가할 수 없기 때문에 자동완성을 사용할 수 없거나 하이라이팅이 안되는 경우가 종종 있다. VsCode의 TypeChecking 옵션을 켜면 미리 자료형을 평가할 수 있는 대신 덕타이핑이 없어져 여러 군데에 타입이 안 맞다는 경고 줄이 그일 수 있다.
PyTorch는 torch아래 backends라는 하위 모듈이 있지만 import torch
만으로는 torch.backends
에 접근할 수 없다는 메시지가 나온다. 이는 torch가 py.typed
라이브러리이기 때문이다. py.typed
라이브러리일 경우 명시적으로 하위 모듈 중 어떤 모듈을 사용할 건지 직접 import해야 인식한다. 즉 import torch.backends
나 from torch import backends
로 import해야한다.
같은 원리가 sklearn의 model_selection에도 적용된다.
opencv-python을 import cv2
로 가져오면 property가 모두 Unknown
으로 나오는 현상이 있다. cv2가 type checking을 제대로 지원하지 않아 생기는 문제이다. type checking을 cv2에만 제외하는 설정인 --extension-pkg-whitelist=cv2
를 Preference Settings
의 Pylint Args
에 추가하여 해결한다.
sklearn.model_selection.train_test_split함수는 list[Unknown | list[Unknown]
형을 반환한다. 따라서 type checking이 제대로 되지 않는다. cv2.resize함수는 Mat
형을 반환하는데 자동으로 numpy.array
형으로 형변환되기 때문에 실행할 때는 상관없지만 type checking은 이상하게 되는 문제가 발생한다.
다양한 문제가 있는 것으로 보아 type checking은 안 하는 것이 현명한 것 같다.
참고자료
https://github.com/microsoft/pyright/issues/2232#issuecomment-907299720