Pylance 사용 시 "Could not be resolved" 에러 발생할 때

Jay Han·2021년 8월 7일
0

TIL

목록 보기
3/4
post-thumbnail

🖼 배경

사내에서 어쩔 수 없이 윈도우를 쓰고 있어서 WSL2 를 설치하여 VS Code로 붙어서 개발을 하고 있습니다. 여러 가지 Extension을 설치하여 잘 쓰고 있는데 그 중 하나가 Pylance 입니다. 자동완성부터 Auto-imports, Jupyter Notebook 호환 등 강력한 기능들이 많습니다. 그러던 중 아래와 같은 해결 불가능한 오류 메시지가 계속 등장하는 것을 확인했습니다.

프로젝트 폴더 내의 로컬 파일 안에 있는 다른 함수나 상수를 불러올 수 없다는 내용의 오류였습니다. 우선 프로젝트 폴더의 파일 구성은 아래와 같습니다.

root
 ├── src
 │    ├── data
 │    ├── utils
 │    │    ├── __init__.py
 │    │    ├── constants.py
 │    │    └── logger.py
 │    └── __init__.py
 ├── README.md
 └── main.py

위 오류는 root/constants.py 파일 내에서 발생하였는데, 상위 폴더에서도 동일하게 발생했습니다. 모든 __init__.py 파일은 정상적으로 작성이 되어 있어서 원인을 찾기가 어려웠습니다. 다행인 것은 VS Code에서만 에러가 발생하고 실제로는 아무런 문제가 발생하지 않았습니다.

🤔 해결

어째 검색해보니 관련 내용이 제법 많이 나왔고 심지어는 Pylance 깃허브에서도 해당 내용을 안내하고 있었습니다.

https://github.com/microsoft/pylance-release/blob/main/TROUBLESHOOTING.md#unresolved-import-warnings

문제는 Pylance의 Language Server의 작동 방식이었습니다. 모듈을 불러올 때 워크스페이스 루트 경로에 상대적이지 않으면 Language Server가 찾을 수 없다는 의미로 이해했습니다.

The language server treats the workspace root (i.e. folder you have opened) as the main root of user module imports.
This means that if your imports are not relative to this path, the language server will not be able to find them.

해결을 위해서는 오류 팝업에서 Quick Fix 를 눌러보니 워크스페이스에 대해 Extra Paths 를 저장하라고 되어 있었습니다. 단순히 현재 작업 워크스페이스를 이 프로젝트에 대해서만 PATH로 인식하도록 하는 우회적인 방법이었습니다.
(여러 깃허브 이슈를 읽어보니 개발자는 그냥 Extra Path로 저장하면 된다고 안내하고 있지만, 많은 사용자들은 이를 버그로 인식하고 수정을 요구하고 있었습니다. 😕)

profile
Machine Learning Engineer 8)

0개의 댓글