본문 바로가기

Python

Container에서 VSC정의로 이동하기

VS Code에서 Python 개발을 하다 보면 import sys 같은 내장 모듈에 대해 Ctrl+클릭(F12)을 자주 사용하게 된다.

하지만 Dev Container 환경에서는 이 기능이 갑자기 작동하지 않았다.

개발환경

 

  • macOS + Docker
  • python:latest 이미지를 기반으로 Dev Container 생성
  • local 폴더를 container의 /workspace로 마운트하여 개발

 

로컬 VSC에서는 sys 위에 커서를 올리고 F12 또는 Cmd+Click 하면 정의로 이동 가능한데,
Dev Container 안에서는 아무 반응도 없고, 동작하지 않는 문제

 

원인 분석: sys는 내장(builtin) 모듈이다

Python의 sys 모듈은 C 언어로 구현된 내장 모듈
따라서 일반적인 Python .py 파일이 아니라, .so 또는 인터프리터 내부에 직접 포함돼 있어 IDE가 추적할 수 없음..

P.S 로컬에서는 왜 잘 되지?

macOS에 설치된 Python은 typeshed 경로에 .pyi 타입 정의 파일을 포함하거나, VS Code가 기본적으로 해당 위치를 인식하고 있어서 정적 분석이 가능 즉, 로컬 Python 인터프리터가 더 많은 힌트를 제공해주는 상태

 

  • mypy --install-types는 typeshed에서 관리하는 .pyi 타입 힌트를 컨테이너에 설치한다.
  • 이로 인해 IDE(Pylance, VS Code)가 정적 분석 기능(정의 이동, 자동완성 등)을 향상시킬 수 있게 됩니다.

 

https://github.com/python/typeshed

설치방법

 

pip install mypy
mypy --install-types