ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Poetry 와 package
    Django 2022. 2. 20. 14:45

    Poetry 

    매 번 pip freeze 할 필요 없이, 알아서 poetry.lock 으로 종속성을 관리해 준다. 또한 pyproject.toml 로 여러 가지 설정들이 하나의 파일로 통합되어서 프로젝트 관리하는 것을 도와준다.

     

     

    Poetry 설치

    curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -

     

     

     

    패키지 설치

    Black

    black은 code formatter 이다. 우리가 작성한 코드를 blakc 코드 스타일에 맞게 자동 수정해준다.

    black 설치 : poetry add black

    black 실행 : poetry run black .

    black 설정 : pyproject.toml에서 아래 코드 추가 (대괄호는 섹션이라한다)

    [tool.black] 

    line-length = 120  -> 한줄에 120자넘어가지 않게 제한 한다.

     

     

    mypy

    타입스크립트처럼 타입을 지정 해주고 제대로 지정 되었는지 검사해주는 라이브러리

    django stub -> mypy와 django를 같이 사용할 수 있도록 도와주는 우리들의 친구

    django-stub, mypy 설치 : poetry add django-stubs mypy

    mypy 실행 : poetry run mypy . (전부 검사)

    mypy에 의해서 문제가 발견이 되면 에러 메시지를 따라서 적절히 수정하면 된다.

     

    mypy 설정 :

    pyproject.toml 에서 

    [tool.mypy]

    strict = true -> 함수의 argument와 return 값에 type hint가 제대로 되어 있는지를 검사한다.

     

    [[tool.mypy.overrides]]

    module = "*.migrations.*" -> module migrations 안에 있는 모든 파일들을 가리킨다.

    ignore_errors = true -> 에러를 무시한다. (Mypy 검사를 하지 않겠다)

     

    [[tool.mypy.overrides]]

    module = "manage" -> manage.py를 가리킨다.

    ignore_errors = true -> 에러를 무시한다. (Mypy 검사를 하지 않겠다) 

     

     

    isort

    import 순서를 정렬 해준다.

    isort 설치 : poetry add isort

    isort 설정 :

    [tool.isort]

    profile = "black" -> isort에게 black이랑 같이 쓰고있어 라고 알려줌으로써 서로 호환되도록 만들어 주는

     

     

    black, isort, mypy 테스트 한 번에 하기

    root경로에 test.sh 생성

    set -euo pipefail -> 스크립트의 명령을 실행하다가 중간에 실패하는 경우에 더 이상 진행하지 않도록 한다.

     

    sudo chmod 777 ./test.sh -> 실행 권한 주기

    ./test.sh

     

     

     

    'Django' 카테고리의 다른 글

    Django allauth Google Login page가 바로 안보일 때  (0) 2022.02.26
    Django Unit Test in VSCode  (0) 2022.02.20
    Django Tip  (0) 2022.02.20
    django basic  (0) 2022.02.20
    TemplateDoesNotExist error  (0) 2022.01.25
Designed by Tistory.