3.3 Python 환경 관리: venv·pip·uv·conda
실습 · 연습문제 1개
가려진 패키지 찾기 shadowed-packages
import numpy는 sys.path의 디렉터리를 앞에서부터 보고 처음 찾은 numpy를 불러온다. 같은 패키지가 여러 디렉터리에 설치되어 있으면 뒤쪽 것은 가려져(shadowed) 쓰이지 않는다. 격리되지 않은 환경에서 pip install --user, 시스템 패키지, conda 환경이 섞이면 이런 일이 생기고, "분명히 설치했는데 버전이 다르다"는 증상으로 나타난다.
함수 find_shadowed(sys_path, installed)를 완성한다.
| 인자 | 의미 |
|---|---|
sys_path |
검색 순서대로 나열한 디렉터리 목록 |
installed |
{디렉터리: {패키지 이름: 버전}} dict. sys_path에 없는 디렉터리가 들어 있을 수 있다 |
반환값은 두 곳 이상에서 발견된 패키지만 담은 dict다.
{패키지 이름: {"used": (버전, 디렉터리), "shadowed": [(버전, 디렉터리), ...]}}
used는 실제로 import되는 것(검색 순서상 첫 번째)이다.shadowed는 가려진 것들을 검색 순서대로 담는다.sys_path에 없는 디렉터리는 import 대상이 아니므로 무시한다.- 패키지 이름은 대소문자와
-·_를 구분하지 않는다(Scikit_Learn과scikit-learn은 같은 패키지). 반환하는 키는 소문자로 바꾸고_를-로 바꾼 이름이다.