Python

poetry를 사용한 파이썬 dependency관리

친구들안녕 2022. 9. 27. 10:30

목차

    서론

    poetry가 1.2 버전으로 업데이트하면서 기존의 main, dev 이외의 group을 추가하여
    dependency가 관리가 가능해졌습니다.

     

    그에 대하여 간단한 명령어 및 사용 결과를 서술하는 페이지입니다.

     

     

    본론

    poetry==1.2.1 기준입니다.

     

    명령어

    1. init

    • poetry init 첫 시작은 init을 사용하여, name, version등 프로젝트 정보를 적고 dependencies를 추가합니다.

    2. add

    • poetry add library 일반적으로 library를 설치하기 위해서는 이 명령어를 사용합니다.
      자동으로 main dependencies[tool.poetry.dependencies]에 속합니다
    • poetry add library -G group
    • library를 설치하되 group dependencies에 속합니다. poetry add django -G test를 입력하면 [tool.poetry.group.test.dependencies] 에 속하게 됩니다.

    3. remove

    • poetry remove library 모든 dependencies에 있는 library를 지웁니다.
    • poetry remove library -G group group에 속한 library를 지웁니다.

    4. install

    • poetry config virtualenvs.create false virtualenv 미 생성 명령어로 Dockerfile에 필수로 추가해야하는 명령어입니다. 미 입력 시,
      poetry run manage.py 와 같은 형태로 파이썬 스크립트를 실행해야 합니다.
    • poetry install poetry에 설정된 libarary를 모두 설치합니다.
    • poetry install —with group 명시한 group dependencies를 포함하여 설치합니다.
    • poetry install —without group 명시한 group dependencies를 제외하여 설치합니다.
    • poetry install --only main,group 명시한 group dependencies를 포함하여 설치하나 —only는 main도 제외하기 때문에 주의해야 합니다.

     

    예시

    pyproject.toml

    예시로 설치할 pyproject.toml 파일입니다.

    main은 django와 pyscopg2

    test는 coverage, pytest

    dev는 django-debug-toolbar

    worker 는 celery를 설치할 예정입니다.

    [tool.poetry]
    name = "tistory"
    version = "0.1.0"
    description = ""
    authors = ["Your Name <you@example.com>"]
    readme = "README.md"
    
    [tool.poetry.dependencies]
    python = "^3.10"
    Django = "^4.1.1"
    psycopg2 = "^2.9.3"
    
    
    [tool.poetry.group.test.dependencies]
    coverage = "^6.4.4"
    pytest = "^7.1.3"
    
    
    [tool.poetry.group.dev.dependencies]
    django-debug-toolbar = "^3.7.0"
    
    
    [tool.poetry.group.worker.dependencies]
    celery = "^5.2.7"
    
    [build-system]
    requires = ["poetry-core"]
    build-backend = "poetry.core.masonry.api"

     

     

    web

    poetry install

    먼저 기본적인 install입니다.

    group 관계 없이 모두 설치가 되었습니다.

     

    test

    poetry install --with test

    다음은 with을 사용한 test 설치입니다.

    기본적으로 install은 전체 설치이기 때문에 with을 추가해도 위와 동일한 걸 알 수 있습니다.

    dev

    poetry install --without test,worker

    without으로 test, worker을 뺀 dev입니다.

    celery, coverage와 그 dependency들이 빠진걸 확인할 수 있습니다.

    worker

    poetry install --only worker

    only를 사용하여 worker만 설치한 결과입니다.

    web, test, dev 제외한 celery와 dependency만 설치된걸 알 수 있습니다.

    only는 기본 dependency인 main까지 무시하므로 only를 사용할땐 주의해야 합니다.