오늘은 참 바쁜 날이었습니다.
일도 하고, 퇴근하고 세미나도 듣고,,,
하지만 해야할 일이 남아있기때문에 다시 앉았습니다.
오늘 밤은 참 길것 같습니다... 하하하
각설하고, 오늘은 떠오르는 의존성 관리자, poetry 를 사용해보겠습니다.
의존성 관리자(Dependency Manager)?
많이 들어보셨을지도 모릅니다.
패키지 관리자라는 말이 조금 더 익숙하실지도요.
아마 파이썬을 사용해보셨다면 한번 쯤은 다들 타이핑해보셨을
pip 가 바로 패키지 관리자임과 동시에 의존성 관리자입니다.
패키지 관리자는 사용자가 설치하고자 하는 패키지를 저장소에서 찾아 다운로드 하고 설치하는 역할을 하고,
의존성 관리자는 하나의 패키지가 요구하는 다른 패키지 들을 올라가며 설치해야할 패키지의 목록을 구성하고, 의존성을 지켜주는 일을 합니다.
오늘 포스팅의 목적은 의존성 관리자를 자세하게 들여다보는 것이 아니기 때문에,
설명은 여기까지하고 바로 poetry 에 대한 내용으로 넘어가겠습니다.
Poetry 는 pip 와 virtualenv 를 동시에 사용할 수 있게 해줍니다.
이 자체로 패키지 관리자이며 의존성 관리자이고 가상환경 관리자입니다.
여태껏 pip 와 virtualenv 를 따로 분리하여 사용했었는데,
이번기회에 배우게 되어 참 기쁘네요 ㅎㅎㅎ
본격적으로 poetry 를 설치해보겠습니다.
poetry 설치하기
curl 사용
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python
저는 wsl (ubuntu 18.04) 에 이미 깔려있는 파이썬 버전을 사용하기 때문에, 버전에 따라
아래 명령어로 실행해야할 수 있습니다.
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python3
pip 사용
pip install --user poetry
pip 또한 버전에 따라
아래 명령어로 실행해야할 수 있습니다.
pip3 install --user poetry
위와 같이 poerty 설치는 두가지 방법을 이용해 설치할 수 있습니다.
설치 이후 프로젝트를 생성해볼까요?
poetry new 프로젝트명
해당 명령어를 통해서 프로젝트를 생성할 수 있습니다.
간단한 사용법 정리
우선 프로젝트 셋업은 아래와 같이 진행하면 됩니다.
poetry new 프로젝트 명
그럼 프로젝트가 생성되는데, 그 안에 아까 언급했던 pyproject.toml 이 생성됩니다.
pyproject.toml 파일을 이용한 패키지 설치는 아래와 같이 진행하면 됩니다.
poetry install
의존성 추가
의존성을 추가하고 싶다면 아래 커맨드를 입력하면 됩니다.
poetry add 추가하고자하는 패키지
해당 명령어를 입력하면 여러 문구가 뜨게 되는데,
그중 Writing lock file 이라는 문구에서 만들어지는 파일이 바로 poetry.lock 파일 입니다.
이 poetry.lock 파일이 있으면 내가 현재 작성중인 프로젝트의 의존성과 동일한 의존성을 갖게 됩니다.
의존성을 유지하려면, 이 poetry.lock 파일은 반드시 필요하겠죠?
의존성 업데이트
poetry.lock 파일을 삭제하고 poetry install 을 하면 의존성을 최신으로 업데이트할 수 있지만,
이것은 한줄로 요약이 가능합니다. 아래와 같이요!
poetry update
빌드
poetry build
위 명령어로 whl 파일을 만들어 빌드할 수 있습니다.
가상환경 만들기
poetry 는 가상환경 또한 관리할 수 있기 때문에, 이 점을 이용하면 굳이 따로 virtualenv 를 사용할 필요가 없습니다.
poetry env use python
파이썬 버전에 따라 아래 명령어로 대체될 수 있습니다.
python env use python3
'Archive > Develop' 카테고리의 다른 글
[ Flask ] migrate 오류 해결 (0) | 2022.07.24 |
---|---|
[ Code Editor ] VSCode 새 탭으로 파일 열기 (0) | 2022.06.18 |
[ Django ] Django App 이름 변경 하는 방법 (+ 수동 설정) / MYSQL ver. (0) | 2022.05.25 |
[ Docker ] Docker란 무엇이며, 컨테이너는 왜 등장하는가 #1 (0) | 2022.05.17 |
[Diagram] 시퀀스 다이어그램(Sequence Diagram) (0) | 2022.05.16 |