파이썬 파일을 리눅스에서 실행하고, 패키지를 배포해 보는 실험을 하다 pip와 pdm이란 것에 대해 알게되었습니다. 둘의 차이가 궁금해서 구글링과 GPT의 힘을 빌려 정리해보는 포스팅입니다.
파이썬으로 작업을 진행할 때, 외부 패키지를 잘 사용하는 것이 중요합니다.
파이썬은 다양한 기능들을 지원하는 패키지들이 많고, 이를 통해 원하는 비즈니스 로직에 집중할 수 있습니다.
패키지 관리를 하는 방법엔 무엇이 있는지 알아보도록 하겠습니다.
pip는 Python의 공식 패키지 관리 도구
- Python 2.7.9 및 3.4 이상에서 기본적으로 제공
- PyPI에서 패키지를 설치하고 관리
패키지 설치
pip install
명령어를 사용하여 PyPI에서 패키지를 설치합니다.
패키지 업데이트
pip install —upgrade
명령어를 사용하여 설치된 패키지를 최신 버전으로 업데이트합니다.
패키지 제거
pip uninstall
명령어를 사용하여 설치된 패키지를 제거합니다.
의존성 관리
pip freeze
명령어로 프로젝트에서 사용된 패키지들의 버전 정보를 requirements.txt
로 보내거나 해당 파일을 사용하여 의존성 설치를 합니다.
# 패키지 설치
$ pip install <PACKAGE_NAME>
# 특정 버전의 패키지 설치
$ pip install <PACKAGE_NAME>==<VERSION>
# 설치된 패키지 목록 보기
$ pip list
# 의존성 목록을 requirements.txt로 저장
$ pip freeze > requirements.txt
# requirements.txt에 있는 모든 패키지 설치
$ pip install -r requirements.txt
의존성 충돌 해결
프로젝트 설정 관리 부족
pdm은 pip의 기능을 확장하여 Python 패키지 관리 및 의존성 관리를 좀 더 효율적으로 해결하기위한 도구
- pdm은
PEP 518
을 준수. PEP는 Python의 코딩 규약, 공식 문서pyproject.toml
을 사용하여 프로젝트의 설정 및 의존성 관리를 통합적으로 처리
PEP 518 지원
pyproject.toml
을 기반으로 의존성 및 설정 관리합니다.
빠른 의존성 해결
pip보다 더 빠르고, 효율적으로 의존성을 해결을 제공합니다.
의존성 그룹화
의존성을 default, dev, optional
그룹으로 나누어 관리합니다.
→ 개발 환경과 프로덕션 환경을 분리하는 데 유용합니다.
가상 환경 관리
프로젝트에 맞는 가상 환경을 자동으로 생성하고 관리할 수 있습니다.
단일 파일로 설정 관리
pyproject.toml
파일만 있으면 프로젝트 설정과 의존성 모두 관리 가능
# pdm 설치
$ pip install pdm
# 프로젝트 초기화 (pyproject.toml 파일 생성)
$ pdm init
# 패키지 설치
# 여러 개의 패키지를 공백을 주고 입력하면 한 번에 여러 개의 패키지 추가 가능
$ pdm add <PACKAGE_NAME>
# 개발용 의존성 추가
$ pdm add --dev <PACKAGE_NAME>
# 패키지 제거
$ pdm remove <PACKAGE_NAME>
# 의존성 설치
$ pdm install
# 의존성 목록 보기
$ pdm list
# 프로젝트의 의존성 내보내기 (requirements.txt 형식으로 보내기)
pdm export -f requirements > requirements.txt
기능 | pip | pdm |
---|---|---|
의존성 관리 | requirements.txt 파일을 사용하여 의존성 관리 | pyproject.toml 파일을 사용하여 의존성 및 설정 관리 |
의존성 해결 | 의존성 충돌을 해결하는 데 어려움이 있을 수 있음 | 더 효율적이고 빠른 의존성 해결 |
의존성 그룹화 | 의존성 그룹화 지원 X | default, dev, optional 그룹으로 의존성 관리 가능 |
설정 파일 | requirements.txt 와 setup.py | pyproject.toml 만 사용 |
PEP 518 지원 | 지원 X | 지원 O |
가상 환경 관리 | 가상 환경을 수동으로 설정하고 관리 | 자동으로 가상 환경을 생성하고 관리 |
패키지 설치 방법 | pip install <PACKAGE_NAME> | pdm add <PACKAGE_NAME> |
패키지 내보내기 | pip freeze > requirements.txt | pdm export -f requirements > requirements.txt |
pyproject.toml
과 같은 새로운 시스템에 익숙하지 않은 경우 사용해도 충분합니다.pyproject.toml
기반의 의존성 관리와 가상 환경 관리가 필요하거나, 최신 표준을 따르려는 경우 사용하기 좋습니다.