WjExplor Story

PYTHONPATH 환경 변수 본문

Python/Python : Code Study

PYTHONPATH 환경 변수

더블유제이플로어 2025. 9. 14. 14:53

## 1. PYTHONPATH란 무엇인가요?

`PYTHONPATH`는 파이썬 인터프리터가 모듈을 찾을 때 사용하는 추가적인 검색 경로들의 목록을 지정하는 환경 변수입니다.

파이썬에서 `import my_module`과 같은 코드를 실행하면, 인터프리터는 정해진 순서에 따라 여러 위치에서 `my_module.py` 파일을 찾습니다. 그 순서는 다음과 같습니다.

  1.  **현재 작업 디렉토리**: 스크립트를 실행하는 바로 그 폴더.
  2.  **`PYTHONPATH` 환경 변수에 지정된 디렉토리들**: 이 환경 변수에 지정된 모든 폴더.
  3.  **파이썬 설치 시 기본으로 포함된 표준 라이브러리 디렉토리**.


`PYTHONPATH`를 사용하면, 완전히 다른 위치에 있는 나만의 파이썬 모듈이나 패키지를 파이썬이 찾을 수 있도록 만들 수 있습니다.


## 2. 왜 사용하나요?


*   **공통 모듈 관리**: 여러 프로젝트에서 공통으로 사용하는 모듈들을 한 곳에 모아두고, `PYTHONPATH`에 그 디렉토리를 추가하여 모든 프로젝트에서 쉽게 `import` 할 수 있습니다.
*   **패키지 개발 및 테스트**: 정식으로 설치(`pip install`)하기 전에 개발 중인 패키지를 테스트할 때, 해당 패키지의 소스 코드가 있는 디렉토리를 `PYTHONPATH`에 추가하여 바로 가져와 쓸 수 있습니다.


## 3. 어떻게 사용하나요? (예제)


다음과 같은 폴더 구조를 예로 들어보겠습니다.

```
D:\python\my_common_libs\
└── utils.py

D:\python\Coding\
└── main.py
```
**utils.py:**
```python
# D:\python\my_common_libs\utils.py
def say_hello(name):
    print(f"Hello, {name}!")
```
**main.py:**
```python
# D:\python\Coding\main.py
import utils

utils.say_hello("World")
```


이 상태에서 `main.py`를 실행하면 `ModuleNotFoundError`가 발생합니다. 이때 `PYTHONPATH`를 설정하여 `D:\python\my_common_libs` 경로를 파이썬에게 알려줄 수 있습니다.


**Windows (cmd)에서 임시 설정:**


```bash
# 1. PYTHONPATH 환경 변수 설정
set PYTHONPATH=D:\python\my_common_libs

# 2. 파이썬 스크립트 실행
python D:\python\JoCoding\main.py
```
결과적으로 "Hello, World!"가 성공적으로 출력됩니다.

*   **여러 경로 추가 (Windows)**: 세미콜론(;)으로 구분합니다.
    `set PYTHONPATH=D:\path\one;D:\path\two`
*   **여러 경로 추가 (Linux/macOS)**: 콜론(:)으로 구분합니다.
    `export PYTHONPATH=/path/one:/path/two`

## 4. 주의사항 및 최신 개발 동향


`PYTHONPATH`는 편리하지만, 의존성 관리가 어렵고 충돌의 위험이 있어 현대적인 파이썬 개발에서는 사용을 최소화하는 추세입니다.


더 권장되는 대안:

  • 가상 환경 (Virtual Environments): `venv`를 사용해 프로젝트별로 독립된 환경을 만드세요. `pip`로 필요한 라이브러리를 가상 환경 내에 직접 설치하는 것이 가장 좋습니다. 의존성이 명확해지고 프로젝트 간 충돌이 없습니다.
  • 편집 가능 설치 (Editable Installs): 직접 패키지를 개발하는 경우, `pip install -e .` 명령어를 사용하면 소스 코드를 수정하면서 다른 프로젝트에서 바로 테스트할 수 있습니다. `PYTHONPATH`보다 훨씬 강력하고 표준적인 방법입니다.


결론: `PYTHONPATH`는 학습용이나 간단한 스크립트에 유용할 수 있지만, 협업이나 복잡한 프로젝트에서는 **가상 환경과 `pip`를 사용하는 것이 표준 방식**입니다.