최초 pip를 통해서 프로젝트를 진행하고 패키지를 설치하였다.
pip가 익숙해져서 처음에 poetry 사용이 어려웠지만 프로젝트 팀원들 간의 의존성 일치를 위해 poetry를 사용해보았다.
(Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py -UseBasicParsing).Content | python -
powershell을 열어 위의 코드를 입력해주자.
(설치가 되는 것이므로 원하는 경로로 이동 후 설치해주면 된다.)
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -
bash를 사용하여 위의 코드를 입력해주자.
설치 후 poetry를 실행할 수 있도록 다음 경로를 쉘 초기화 파일에 추가
export PATH=$PATH:$HOME/.poetry/bin
설치 이후 간단하게 하나의 프로젝트를 생성하여 사용방법을 알아보자.
poetry new 프로젝트명
프로젝트 생성을 원하는 경로에 해당 명령어를 입력하여 프로젝트를 생성한다.
프로젝트가 생성되면 pyproject.toml가 생성되는데 해당 파일은 프로젝트의 의존성을 조율해주는 파일이기에 가장 중요하다.
패키지를 설치하면 자동으로 해당 파일에 입력된다.
poetry로 가상환경을 만들고 사용할 수 있다.
poetry env use 파이썬경로
원하는 버전이 있는 파이선의 경로를 직접 지정해주면 된다
( ex. C:\Users\Programs\Python\Python38\python.exe )
poetry env info
poetry shell
exit
exit만 작성하면 되며, 꼭 종료전에 해주자.
poetry env list
poetry env remove 파이선경로
poetry new 프로젝트명
새로운 프로젝트 생성
poetry init
pyproject.toml 파일을 인터렉티브하게 만들 수 있음.
# 패키지 업데이트
poerty update
# 하나씩 지정해서 업데이트도 가능
poetry update requests toml
# 업데이트는 하지 않고 poetry.lock 만 업데이트
poerty update --lock
의존성 패키지의 버전을 업데이트하고 poetry.lock파일을 업데이트 한다.
poetry add django
# 개발환경에서 필요한 패키지 설치
poetry add pytest factory-boy --dev
# 버전을 지정가능
poetry add django@^3.0.0
poetry add "django=3.0.0"
# 최신버전을 설치
poetry add django@latest
# 깃 저장소에 있는 패키지 설치
poetry add git+https://github.com/django/django.git
# 깃 저장소의 패키지에서 브랜치를 지정
poetry add git+https://github.com/django/django.git#stable/2.2.x
# 로컬에 디렉토리의 파일로 설치하기
poetry add ./my-package/
poetry add ./my-package/dist/my-package-0.1.0.tar.gz
poetry add ./my-package/dist/my-package-0.1.0.whl
django 패키지 설치로 예를 들었으며, 패키지 추가 후 pyproject.toml에 추가된다.
poetry remove django
설치된 패키지 삭제
# 설치된 모든 패키지를 보여준다.
poetry show
# 개발환경용 제외하고 보여준다.
poetry show --no-dev
# 특정패키지를 지정하면 상세내용을 보여줍니다.
poetry show django
# 최신 버전을 보여준다.
poetry show --latest (-l)
# 업데이트를 해야하는 패키지들을 보여준다.
poetry show --outdate (-o)
# 의존성 트리를 보여준다.
poetry show --tree
poetry build
소스를 배포가능한 형태로 빌드한다.
poetry run python manage.py runserver
프로젝트의 virtualenv에 커맨드를 전달하여 실행시킨다.