Python PDM 사용법 알아보기

프로필 사진mingke

Python pdm use

목차

PDM이란?

PDM은 PythonDependencyManager입니다. 비슷한 프로그램이 여러개 있는데 저는 Poetry를 사용하고 있었습니다. 그러다가 FastAPI Repository에서 PDM이 사용되고 있는걸 발견했는데 궁금해서 저도 한 번 써봤습니다.

PDM은 PEP582에 기반한 유연한 접근 방식을 실험적으로 지원한다고 합니다. PEP582는 Rejected 되었더군요. PEP582는 가상환경을 설치하지 않고 __pypackages__ 안에서 의존성들을 관리한다고 하는데요. PEP reject 되어서 그런지 IDE에서 빌트인으로 지원하지 않아서 개별적으로 설정이 필요한 듯합니다.

Loading...

PDM설치

Mac에서는 Homebrew 설치를 하면 됩니다. 다른 OS는 위 링크에서 설치 방법을 살펴보세요.

brew install pdm

PDM으로 프로젝트 시작하기

Poetry와 명령어가 비슷해서 어렵지 않게 시작할 수 있었습니다.

pdm init
 
# 출력결과
Creating a pyproject.toml for PDM...
Please enter the Python interpreter to use
 0. cpython@3.12 (/opt/homebrew/bin/python3)
 1. cpython@3.12 (/opt/homebrew/bin/python3.12)
 2. cpython@3.9 (/usr/bin/python3)
 3. cpython@3.12 (/opt/homebrew/Cellar/python@3.12/3.12.4/Frameworks/Python.framework/Versions/3.12/bin/python3.12)
Please select (0):
Virtualenv is created successfully at /Users/minchae/DEV/python/pdm-test/.venv
Project name (pdm-test):
Project version (0.1.0):
Do you want to build this project for distribution(such as wheel)?
If yes, it will be installed by default when running `pdm install`. [y/n] (n): y
Project description (): test
Which build backend to use?
0. pdm-backend
1. setuptools
2. flit-core
3. hatchling
Please select (0): 0
License(SPDX name) (MIT):
Author name (jungminchae):
Author email (minchae3618@gmail.com):
Python requires('*' to allow any) (>=3.12):
Project is initialized successfully
 
  • 파이썬 인터프리터를 선택할 수 있는 것이 매우 좋았습니다.
  • 프로젝트 안에 가상환경도 자동으로 생성됩니다. poetry에서는 따로 config설정을 해줬는데 말이죠.
  • build할 것이냐는 질문에 y를 하면 build backend를 고르라고 하는데, FastAPI 따라서 pdm-backend 를 선택했습니다.
  • build 질문에 n을 선택하면 백엔드 선택 질문만 빠집니다.
  • .pdm_python안에 파이썬 인터프리터 경로가 저장됩니다. pdm use 로 인터프리터를 변경할 수도 있네요.

의존성 설치

add 로 설치 가능합니다.

# 일반 설치
pdm add fastapi
 
# github에 있는 프로젝트 설치하기
pdm add git+https://github.com/Jungminchae/orm-study.git
 
# dev 의존성 설치
pdm add pytest --dev
 
# 삭제
pdm remove fastapi
 
# 업데이트
pdm update fastapi
  • pdm.lock 파일과 pyproject.toml 에 추가됩니다.
  • 의존성 설치, 삭제, 업데이트는 poetry와 동일합니다.
  • --dev 옵션을 사용하면 dev dependency로 설치됩니다.

PDM Scripts

scripts 명령어를 만들어 놓으면 쉽게 실행할 수 있습니다. 아주 유용한 기능이네요. npm scripts와 유사합니다.

[tool.pdm.scripts]
start = "fastapi dev src/main.py"
 
# 다음과 같이 실행 가능
pdm start
  • scripts의 다양한 사용법이 공식문서에 나와있어 필요따라 읽어보고 사용하면 되겠습니다.

PDM Export

의존성을 requirements.txt로 export하는 방법입니다.

pdm export -o requirements.txt
 
# hash 값 없이 생성
pdm export -o requirements.txt --no-hashes

더 많은 CLI Reference

Loading...

마무리

pdm에 사용법에 대해서 간단하게 알아봤습니다. 자주 쓸 것같은 명령어도 정리해봤습니다.

poetry와 비교해서 좋았던 점은 다음과 같습니다.

  • 문서화가 훨씬 보기 편하게 잘 되어 있는 듯한 느낌을 받았습니다.
  • 파이썬 버젼을 다양하게 지원해준다는 것이 좋았습니다.
  • 의존성 설치할 때 속도가 더 빠르다고 느껴졌습니다.
  • pyproject도 뭔가 더 명료하게 작성해주는 것 같습니다.

PEP582는 아직 사용안해봤지만, 지금 사용해 본 것도 충분히 좋았고 편리했습니다. 오늘 처음 써봤기 때문에 일단은 좀 더 써볼 것 같은데, 지금 느낌상 별 불편함 못느끼면 계속 사용할 것 같습니다.

Loading...