Poetry
소개https://velog.io/@brown_eyed87/220918-파이썬-패키지-관리툴-poetry 참고
Poetry
설치하기 curl -sSL https://install.python-poetry.org | python3 -
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -
pip
로 설치 pip install --user poetry
poetry --version
Poetry
간단한 사용법poetry
를 사용한 프로젝트 생성하기
poetry new '프로젝트명'
해당 명령어는 현재 경로 내에 '프로젝트명' 디렉토리를 생성해주고, 해당 디렉토리 내 구조는 다음과 같음.
→ 편의상, 프로젝트 명을 poetry-demo
라고 하여 설명하겠음.
poetry-demo
├── pyproject.toml
├── README.md
├── poetry_demo
│ └── __init__.py
└── tests
└── __init__.py
pyproject.toml
pyproject.toml
파일은 의존성을 관리하는 파일로, 내용은 아래와 같음.
[tool.poetry]
name = "poetry-demo"
version = "0.1.0"
description = ""
authors = ["Sébastien Eustace <sebastien@eustace.io>"]
readme = "README.md"
packages = [{include = "poetry_demo"}]
[tool.poetry.dependencies]
python = "^3.7"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
^
의 의미는이상
을 뜻함.- 자세한 내용은 Poetry 공식 문서 참고
- 의존성 관리는
tool.poetry.dependencies
와tool.poetry.dev-dependencies
에서 담당.- 의존성을 추가하고 싶다면 add 서브 커맨드를 사용하면 됨.
DJango
실습 시 진행 순서※ 실습 시에는 위의 내용과 약간은 다르게 진행하였음.
- vs code 실행
- terminal 실행 후 프로젝트 폴더를 관리할 경로로 이동
cd '폴더 경로'
- 프로젝트 폴더 생성 후 경로 이동
mkdir '프로젝트 폴더 이름' cd '프로젝트 폴더 이름'
- 가상환경 생성
poetry init
- 몇 가지를 입력할 수 있도록 표시가 될텐데, 쭉 엔터 치다가
yes/no 나오는 부분에서 첫 번째no
, 두번째no
, 세번째yes
입력
(첫 번째, 두 번째는 필요하면 나오는 메세지를 본인이 읽어보고 필요시 yes로 해도 무방)- 아래와 같이, pyproject.toml 파일이 만들어 지면 완성!
django
와drf
설치
- 희망 시, 버전 지정할 것
poetry add django djangorestframework
- django
프로젝트 생성
poetry run django-admin startproject config .
- django '앱 생성
poetry run django-admin startapp '앱 이름`
- 여기서부터 django 프로젝트 진행하면 됨.
Poetry
명령어터미널 창에
poetry
라고 입력 시, 아래와 같이 안내해줌.
Poetry (version 1.2.0)
Usage:
command [options] [arguments]
Options:
-h, --help Display help for the given command. When no command is given display help for the list command.
-q, --quiet Do not output any message.
-V, --version Display this application version.
--ansi Force ANSI output.
--no-ansi Disable ANSI output.
-n, --no-interaction Do not ask any interactive question.
--no-plugins Disables plugins.
--no-cache Disables Poetry source caches.
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug.
Available commands:
about Shows information about Poetry.
add Adds a new dependency to pyproject.toml.
build Builds a package, as a tarball and a wheel by default.
check Checks the validity of the pyproject.toml file.
config Manages configuration settings.
export Exports the lock file to alternative formats.
help Displays help for a command.
init Creates a basic pyproject.toml file in the current directory.
install Installs the project dependencies.
list Lists commands.
lock Locks the project dependencies.
new Creates a new Python project at <path>.
publish Publishes a package to a remote repository.
remove Removes a package from the project dependencies.
run Runs a command in the appropriate environment.
search Searches for packages on remote repositories.
shell Spawns a shell within the virtual environment.
show Shows information about packages.
update Update the dependencies as according to the pyproject.toml file.
version Shows the version of the project or bumps it when a valid bump rule is provided.
cache
cache clear Clears Poetry's cache.
cache list List Poetry's caches.
debug
debug info Shows debug information.
debug resolve Debugs dependency resolution.
env
env info Displays information about the current environment.
env list Lists all virtualenvs associated with the current project.
env remove Remove virtual environments associated with the project.
env use Activates or creates a new virtualenv for the current project.
self
self add Add additional packages to Poetry's runtime environment.
self install Install locked packages (incl. addons) required by this Poetry installation.
self lock Lock the Poetry installation's system requirements.
self remove Remove additional packages from Poetry's runtime environment.
self show Show packages from Poetry's runtime environment.
self show plugins Shows information about the currently installed plugins.
self update Updates Poetry to the latest version.
source
source add Add source configuration for project.
source remove Remove source configured for the project.
source show Show information about sources configured for the project.
new
poetry new '프로젝트명'
init
pyproject.toml
파일을 인터렉티브 하게 만들 수 있게 도와줌.poetry
가 임의의 가상환경 생성 poetry new '프로젝트명'
install
pyproject.toml
파일을 읽어서 의존성 패키지를 설치poetry.lock
이 없으면 생성하고 있으면 해당 파일을 그대로 사용 # 의존성 설치
poetry install
# 개발환경의 의존성은 빼고 설치
poetry install --no-dev
# -E 또는 --extras로 추가 의존성을 설정 가능
poetry install --extras "mysql redis"
poerty install -E mysql -E redis
update
poetry.lock
파일을 업데이트 # 패키지 업데이트
poerty update
# 하나씩 지정해서 업데이트도 가능
poetry update requests toml
# 업데이트는 하지 않고 poetry.lock 만 업데이트
poerty update --lock
add
# django 패키지 추가
poetry add django
# 개발환경에서 필요한 패키지 설치
poetry add pytest factory-boy --dev
# 버전을 지정가능
poetry add django@^3.2.13
poetry add "django=3.2.13"
# 최신버전을 설치
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
remove
# flask 패키지 삭제
poetry remove flask
# 개발환경 패키지 삭제
poetry remove pytest
show
# 설치된 모든 패키지를 보여줌.
poetry show
# 개발환경용 제외하고 보여줌.
poetry show --no-dev
# 특정패키지를 지정하면 상세내용을 보여줌.
poetry show django
# 최신 버전을 보여줌.
poetry show --latest (-l)
# 업데이트를 해야하는 패키지들을 보여줌.
poetry show --outdate (-o)
# 의존성 트리를 보여줌.
poetry show --tree
build
tarball
, wheel
)빌드 poetry build
publish
PyPI
에 배포 가능PyPI
계정이 필요. poerty publish
``` https://pypi.org/account/register/
### <span style='background-color: #fbf3db'>`new`</span>
- 신규 프로젝트 생성
```python
poetry new '프로젝트명'
config
# 설정보기
poetry config --list
# 설정법
poetry config [options] [setting-key] [setting-value1] ... [setting-valueN]
run
poetry run python -V
check
pyproject.toml
의 유효함을 체크하는 명령어check
$ poetry search beautiful | grep soup
---------------------------------
# output
beautifulsoup (3.2.2)
beautifulsoup4 (4.9.1)
lock
pyproject.toml
에 설정된 의존성들에 대한 lock
파일을 생성합니다. (설치X)보다 상세한 내용은 아래의 두 사이트를 참고 요망
- 김준태 강사님의 Backend - DRF Advance 수업
- https://blog.gyus.me/2020/introduce-poetry/
- https://velog.io/@hj8853/Poetry를-사용하여-가상환경-만들기