Python 모듈 검색 경로

About_work·2024년 3월 5일
0

python 기초

목록 보기
43/56
  • 특정 리포지토리(프로젝트) 내에서 한 모듈이 다른 모듈을 import할 수 있는 이유는 Python의 모듈 검색 경로 때문
  • 가상 환경(virtualenv)를 만들었을 때, 해당 가상 환경 내의 site-packages 디렉토리에 리포지토리가 자동으로 참조되는 것은 아닙니다.
  • 하지만, pip install -e . 명령을 실행하지 않았어도 모듈 간 참조가 가능한 상황에 대해 설명하겠습니다.

Python 모듈 검색 경로

  • Python이 모듈을 임포트할 때는 여러 경로를 검색합니다. 이 검색 경로 목록에는 다음이 포함됩니다:
  1. 현재 디렉토리:
  • Python 스크립트를 실행하는 디렉토리는 항상 Python의 검색 경로에 포함
  • 따라서, 같은 리포지토리 내의 모듈을 상대적 경로로 임포트할 수 있음
  1. PYTHONPATH 환경 변수
  • 이 환경 변수에 설정된 디렉토리들도 Python 검색 경로에 포함
  1. 표준 라이브러리 디렉토리:
  • Python 설치와 함께 제공되는 표준 라이브러리의 경로
  1. site-packages 디렉토리:
  • Python 패키지 관리자(pip)를 통해 설치된 패키지들이 위치하는 디렉토리

가상 환경과 모듈 임포트

  • 가상 환경을 활성화할 때, Python 인터프리터는 그 환경의 site-packages 디렉토리를 모듈 검색 경로에 추가
  • 그러나 가상 환경을 만들기만 하고, 특정 리포지토리(프로젝트)를 site-packages에 명시적으로 추가하지 않았다면, 리포지토리는 자동으로 검색 경로에 포함되지 않습니다.
  • pip install -e . 명령은 개발 중인 프로젝트를 가상 환경의 site-packages에 "편집 가능" 모드로 추가
  • 이를 통해 프로젝트 디렉토리가 검색 경로에 포함되어, 프로젝트 내에서 서로 모듈을 자유롭게 참조할 수 있게 됩니다.

프로젝트 내 모듈 참조

  • pip install -e .를 실행하지 않고도 프로젝트 내의 모듈을 서로 참조할 수 있는 경우는 주로 현재 작업 디렉토리(current working directory) 때문
  • Python 스크립트 또는 인터프리터를 해당 프로젝트의 루트 디렉토리(또는 하위 디렉토리)에서 실행하면, Python은 현재 디렉토리를 모듈 검색 경로에 자동으로 포함시킵니다.
  • 이 때문에 pip install -e .를 수행하지 않아도 프로젝트 내의 다른 모듈을 import할 수 있습니다.
  • 그러나, 프로젝트를 시스템의 다른 위치에서 실행하거나 다른 프로젝트/패키지에서 해당 프로젝트의 모듈을 참조하려면, pip install -e .를 사용하여 프로젝트를 가상 환경에 추가하는 것이 좋습니다.
profile
새로운 것이 들어오면 이미 있는 것과 충돌을 시도하라.

0개의 댓글