2022. 4. 22. 16:18ㆍAI/Big data
- 목차
About poetry
Python project의 의존 관리 기능
system requirements
- Python 3.7+
- multi-platform: Windows, Linux, OSX
installation
pip install --user poetry
pyproject.toml
pyproject.toml file 하나로 모든 Python의 package들을 관리
이 파일로 setup.py, requirements.txt, setup.cfg, MANIFEST.in, Pipfile 들을 대체할 수 있음
[tool.poetry]
name = "my-pakcage"
version = "0.1.0"
description = "my package"
license = "MIT"
authors = [
"R"
]
readme = "README.md"
repository = "https://github.com/my-package"
homepage = "https://github.com/my-package"
keywords = ["package", "my-package"]
[tool.poetry.dependencies]
python = "~2.7 || ^3.2"
toml = "^0.9"
requests = {version = "^2.13", extras = ["security"]}
pathlib2 = {version = "^2.2", python = "~2.7", allow-prereleases = true}
cleo = {git = "https://github.com/sdispater/cleo.git", branch = "master"}
pendulum = {version = "^1.4", optional = true}
[tool.poetry.dev-dependencies]
pytest = "^3.0"
pytest-cov = "^2.4"
[tool.poetry.scripts]
my-script = "my_package:main"
별도의 readme file을 둘 수 있음
keyword는 tag처럼 사용됨
dependencies 부분에서는 caret, tilde, wildcard, inequality와 multiple requirements를 지원
python version을 명시해야 함
하나의 file에 여러 설정들을 모두 집약하는 것을 만들고 싶었다고 함
Rust의 cargo등에 영감을 받았음
dependency resolution
pipenv install oslo.utils==1.4.0
위 경우 다음과 같이 에러가 날 수 있음
Could not find a version that matches pbr!=0.7,!=2.1.0,<1.0,>=0.6,>=2.0.0
Poetry는
poetry add oslo.utils=1.4.0
- Installing pytz (2018.3)
- Installing netifaces (0.10.6)
- Installing netaddr (0.7.19)
- Installing oslo.i18n (2.1.0)
- Installing iso8601 (0.1.12)
- Installing six (1.11.0)
- Installing babel (2.5.3)
- Installing pbr (0.11.1)
- Installing oslo.utils (1.4.0)
효과적으로 dependency를 해결
(매우 효과적으로 지원)
oslo.utils (1.4.0) depends on:
- pbr (>=0.6,!=0.7,<1.0)
- Babel (>=1.3)
- six (>=1.9.0)
- iso8601 (>=0.1.9)
- oslo.i18n (>=1.3.0)
- netaddr (>=0.7.12)
- netifaces (>=0.10.4)
사용법
poetry new my-prject
다음의 file들이 생성됨
my-project tree
.
├── README.rst
├── my_project
│ └── __init__.py
├── pyproject.toml
└── tests
├── __init__.py
└── test_my_project.py
pyproject.toml file이 의존성 관리 file
[tool.poetry]
name = "my-project"
version = "0.1.0"
description = ""
authors = ["R"]
[tool.poetry.dependencies]
python = "^3.8"
[tool.poetry.dev-dependencies]
pytest = "^5.2"
[build-system]
requires = ["poetry>=0.12"]
build-backend = "poetry.masonry.api"
의존성 부분에 package 추가
poetry add django
[tool.poetry.dependencies]에
Django = "^4.0.4"가 추가됨
^(캐럿)의 의미
^1.2.3 | >=1.2.3 <2.0.0 |
^1.2 | >=1.2.0 <2.0.0 |
^1 | >=1.0.0 <2.0.0 |
^0.2.3 | >=0.2.3 <0.3.0 |
^0.0.3 | >=0.0.3 <0.0.4 |
^0.0 | >=0.0.0 <0.1.0 |
^0 | >=0.0.0 <1.0.0 |
의존성 update
poetry update
packaging
poetry build
이를 수행하면, 다음과 같이 파일들이 생성됨
├── dist
│ ├── my-project-0.1.0.tar.gz
│ └── my_project-0.1.0-py3-none-any.whl
명령어
명령어 | 설명 |
poetry new prj | prj 생성 |
poetry init |
pyproject.toml을 대화형으로 생성 |
poetry install | pyproject.toml file을 보고 의존성 package들을 설치 poetry install --no-dev # 개발 환경 의존성을 제외하고 설치 poetry install --extra "mysql redis" # 추가 의존성 설치를 지정 |
poetry update | 의존성 update poetry.lock file을 update |
poetry build | packaging |
poetry add package_name | package 의존성을 추가 |
poetry remove flask | package 의존성을 제거 |
poetry show | 모든 설치된 의존성을 보여줌 poetry show --no-dev # 개발환경을 제외한 의존성을 보여줌 poetry show flask # 특정 package의 상세 내용을 보여줌 poetry show --outdate poetry show --tree |
poetry publish | PyPI에 배포 |
poetry config --list | 설정 보기 |
poetry run python -V | virtualenv에 command를 전달하여 실행 |
poetry search beautiful | package를 search |
poetry env use 경로 | 가상 환경 관리 |
poetry env list | 가상환경 list-up |
poetry env remove 경로 | 삭제 |
poetry env info | 정보 확인 |
'AI > Big data' 카테고리의 다른 글
빅데이터 에코 시스템 (0) | 2022.04.29 |
---|---|
isort (0) | 2022.04.22 |
surprise knns.KNNWithMeans (0) | 2022.03.26 |
Anaconda 사용법 (0) | 2022.03.26 |
Matrix Factorization impl 2 (0) | 2022.03.25 |