220923_Poetry 사용하기

Csw·2022년 9월 23일
0

Django

목록 보기
1/14

Poetry 소개

https://velog.io/@brown_eyed87/220918-파이썬-패키지-관리툴-poetry 참고

Poetry 설치하기

	curl -sSL https://install.python-poetry.org | python3 -
  • 윈도우(powershell)
    → 아래 명령어 이외의 설치 방식은 예전 방식
	(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -
  • pip로 설치
	pip install --user poetry
  • 설치 확인
    → 설치가 완료되었다면 터미널/vscode 를 재실행하신 후에, 아래 명령어를 통해서 확인
	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"
  • 의존성 관리는 tool.poetry.dependenciestool.poetry.dev-dependencies 에서 담당.
  • 의존성을 추가하고 싶다면 add 서브 커맨드를 사용하면 됨.

DJango 실습 시 진행 순서

※ 실습 시에는 위의 내용과 약간은 다르게 진행하였음.

  1. vs code 실행

  2. terminal 실행 후 프로젝트 폴더를 관리할 경로로 이동
cd '폴더 경로'
  1. 프로젝트 폴더 생성 후 경로 이동
mkdir '프로젝트 폴더 이름'
cd '프로젝트 폴더 이름'
  1. 가상환경 생성
poetry init
  • 몇 가지를 입력할 수 있도록 표시가 될텐데, 쭉 엔터 치다가
    yes/no 나오는 부분에서 첫 번째 no, 두번째 no, 세번째 yes 입력
    (첫 번째, 두 번째는 필요하면 나오는 메세지를 본인이 읽어보고 필요시 yes로 해도 무방)
  • 아래와 같이, pyproject.toml 파일이 만들어 지면 완성!
  1. djangodrf 설치
    • 희망 시, 버전 지정할 것
	poetry add django djangorestframework
  1. django 프로젝트 생성
	poetry run django-admin startproject config .
  1. django '앱 생성
	poetry run django-admin startapp '앱 이름`
  1. 여기서부터 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

  • 패키지설정을 pyproject.toml 에 추가
	# 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 계정이 필요.
    • 계정이 없다면 PyPI 사이트 접속 후 생성할 것.
    • 프로젝트명이 겹치면 배포를 할 수 없으니, 자신만의 독특한 프로젝트 명을 정해서 배포할 것.
	poerty publish
``` https://pypi.org/account/register/

### <span style='background-color: #fbf3db'>`new`</span>
- 신규 프로젝트 생성
```python
	poetry new '프로젝트명'

config

  • poetry 관련 설정을 변경 가능
	# 설정보기
	poetry config --list


	# 설정법
	poetry config [options] [setting-key] [setting-value1] ... [setting-valueN]

run

  • 프로젝트의 virtualenv 에 커맨드를 전달하여 실행하게 됨
	poetry run python -V

check

  • pyproject.toml 의 유효함을 체크하는 명령어

check

  • 패키지를 찾기위한 커맨드.
    • 예를들어 beautifulsoup 의 패키지명의 철자가 기억이 안나고
      beautiful 만 기억나면 아래와 같이 할 수 있습니다 .
	$ poetry search beautiful | grep soup

---------------------------------
# output
beautifulsoup (3.2.2)
beautifulsoup4 (4.9.1)

lock

  • pyproject.toml 에 설정된 의존성들에 대한 lock 파일을 생성합니다. (설치X)

가상 환경 관리하기 명령어

추후 작성 예정


Reference

보다 상세한 내용은 아래의 두 사이트를 참고 요망

0개의 댓글