라떼군 이야기
VS Code Python 확장 프로그램 무한 로딩 및 'Reactivating terminals' 오류 해결 방법
Problem
VS Code를 1.92 버전 등으로 업데이트한 후, Python 확장 프로그램이 정상적으로 실행되지 않고 상태 표시줄(Status bar)에 “Reactivating terminals…” 라는 메시지와 함께 로딩 스피너가 무한히 돌아가는 현상이 발생합니다.
이때 OUTPUT > Python 탭을 확인해보면 다음과 같이 환경 경로를 찾지 못하는 에러가 기록되어 있습니다.
Failed to resolve env "/mnt/data-linux/miniconda3"
이로 인해 Python 인터프리터가 잡히지 않고 코드 실행이나 린팅(Linting) 기능을 사용할 수 없게 됩니다.
Background
VS Code의 Python 확장 프로그램은 시작 시 시스템에 설치된 가상 환경(Conda, venv 등)과 인터프리터를 검색(Discovery)하는 과정을 거칩니다.
최근 VS Code 업데이트에서는 이 환경 검색 성능을 높이기 위해 새로운 Native Locator를 도입했습니다. 하지만 특정 OS 환경(특히 Linux/WSL)이나 Conda 설정에서 이 새로운 검색 도구가 경로를 제대로 해석하지 못하거나(Resolve failed), 이전 캐시 데이터와 충돌을 일으켜 초기화 과정에서 무한 대기 상태(Deadlock)에 빠지는 경우가 발생하고 있습니다.
Solution
이 문제는 Python 환경 검색 방식을 변경하거나 캐시를 초기화하여 해결할 수 있습니다. 가장 확실한 해결책인 Locator 변경 방법을 먼저 시도해보세요.
방법 1: Python Locator 설정 변경 (권장)
새로 도입된 native 방식 대신, 기존의 안정적인 js 방식으로 검색 도구를 변경하면 문제가 즉시 해결됩니다.
- VS Code에서 설정(Settings)을 엽니다. (단축키:
Ctrl + ,또는Cmd + ,) - 검색창에
Python Locator를 입력합니다. - Python > Locator 항목을 찾아 드롭다운 메뉴에서
native를js로 변경합니다. - VS Code를 재시작합니다.
// settings.json 파일에서 직접 수정할 경우 아래 설정을 추가하세요.
{
"python.locator": "js"
// "native" (기본값) 대신 "js"를 사용하여
// 레거시 JavaScript 기반 환경 검색기를 사용하도록 강제합니다.
}
방법 2: Python 확장 캐시 초기화
설정을 변경하기 전에 캐시 문제인지 확인하고 싶다면, Python 확장의 내부 캐시를 지우는 방법을 시도할 수 있습니다.
- 명령 팔레트를 엽니다. (단축키:
Ctrl + Shift + P또는Cmd + Shift + P) Python: Clear Cache를 검색합니다.- Python: Clear Cache and Reload Window 옵션을 선택합니다.
이 명령은 Python 확장 프로그램이 저장하고 있던 환경 정보 캐시를 모두 삭제하고 창을 새로고침합니다. 일시적인 충돌이었다면 이 방법으로도 해결될 수 있습니다.
Deep Dive
Python Locator란?
VS Code 팀은 Python 환경 검색 속도를 획기적으로 개선하기 위해 기존 JavaScript 기반의 구현체에서 Rust 등으로 작성된 네이티브 바이너리 기반의 Native Locator로 전환을 진행하고 있습니다. native 설정이 기본값이 된 이후, 대규모 프로젝트나 복잡한 Conda 환경에서 훨씬 빠른 속도를 보여주지만, 이번 사례처럼 특정 엣지 케이스(Edge Case)에서는 호환성 문제가 발생하기도 합니다.
주의사항:
js 로케이터는 ‘레거시’ 방식이므로, 향후 VS Code 업데이트에서 native 로케이터의 버그가 수정된다면 다시 native로 설정을 되돌리는 것이 성능 면에서 유리할 수 있습니다. 주기적으로 릴리스 노트를 확인하거나, 몇 달 뒤 설정을 원복하여 문제가 해결되었는지 테스트해보는 것을 권장합니다.
Conclusion
VS Code 업데이트 후 Python 확장이 ‘Reactivating terminals’ 메시지와 함께 멈춘다면, 이는 주로 새로운 환경 검색 도구의 호환성 문제입니다. 가장 효과적인 해결책은 설정에서 Python Locator를 js로 변경하는 것입니다. 만약 이 방법이 부담스럽다면 캐시 초기화를 먼저 시도해 볼 수 있습니다.