[VSCode] Python 개발 환경 세팅 : Poetry 가상환경
본문 바로가기
Usage

[VSCode] Python 개발 환경 세팅 : Poetry 가상환경

2022. 9. 29.

1. Poetry 설치

1.1 Poetry란?

Poetrypipvenv (pip + virtualenv)와 비슷하게, pipvirtualenv를 동시에 사용할 수 있게 해주는  packaging과 dependency management를 위한 tool이다.
Poetry는 pip와 비교하면 쉽게 이해할 수 있다.(pip에 관하여 잘 모른다면, pip에 관한 설명은 아래 링크에서 확인하기 바란다.)
https://takeheed.tistory.com/13

 

[Python] pip &  virtualenv / venv 가상환경 / pipvenv

1. pip란? pip documentation에 의하면, pip is the package installer for Python. You can use it to install packages from the Python Package Index and other indexes.  docs 설명과 같이 pip는 'Python..

takeheed.tistory.com

 

PACKAGING

Poetry의 packaging 역할은 pip와 같이, package installing 및 managing이다. 즉, 원하는 package를 설치하고, 관리해주는 것이다.
Build, Publish도 간단히 할 수 있다.

poetry build  # easy build & package projects

poetry publish # publishing to PyPI


DEPENDENCY RESOLVER

packaging 역할은 pip로도 가능한데, 왜 pip를 사용하지 않을까?

프로젝트에서 사용하는 package A에서 요구하는 package a가 2.0 버전이라고 하자. package a를 설치한 상황에서 package A를 (이미 package a가 1.0 버전으로 설치되어 있는데 2.0 버전으로 설치할 수 있다는 것... 즉 dependency resolving에 실패한 것...)

pip는 lock 파일이 존재하지 않고, 사용자가 직접 pip freeze 명령어나 requirements.txt (pip install -r requirements.txt)를 만들어야 했는데, Poetrylock파일과 pyproject.toml를 제공하여 setup.py, requirements.txt, setup.cfg, MAIFEST.in, Pipfile를 대신한다. Poetry는 버전을 확인하고, 특정 버전 이상이 아닌 경우 설치가 불가하도록 dependency 충돌을 방지해준다.

ISOLATION : Virtual Environmnet
pip는 전역에 (globally) package를 설치하는데, 이때 서로 다른 버전의 프로젝트마다 충돌이 일어날 수 있다. 예시로, 프로젝트 A에는 1.0 버전의 패키지 a를 사용하는데, 프로젝트 B에서는 2.0 버전의 패키지 a를 사용할 때 충돌이 일어날 수 있다.
이처럼 서로 다른 종류와 버전의 패키지를 사용할 수 있도록 '독립된 작업 공간', 즉 가상 환경을 Poetry가 만들어준다. 구성된 virtualenv를 사용하거나 시스템에서 분리되어 있는 자체 가상 환경을 만들어 줄 수 있다.

1.2 Poetry 설치

1) pipx 설치

official installer로 Poetry를 설치하는 방법도 있었지만, 필자는 pipx로 Poetry를 설치했다. 위에서 pip는 전역으로 패키지를 설치하기 때문에 (pip is a general-purpose package installer for both libraries and apps with no environment isolation), dependency 충돌이 일어난다고 했는데, pipx는 그 문제점을 해결한 package manager이다.

pipx — Install and Run Python Applications in Isolated Environments

 

# macOS
brew install pipx
pipx ensurepath

# Linux, install via pip (requires pip 19.0 or later)
python3 -m pip install --user pipx
python3 -m pipx ensurepath

# Windows, install via pip (requires pip 19.0 or later)
## If you installed python using the app-store, replace `python` with `python3` in the next line.
python -m pip install --user pipx

#Set up your path environmental variables
%USERPROFILE%\.local\bin
%USERPROFILE%\AppData\Roaming\Python\Python38\Scripts

pipx ensurepath

2) pipx로 Poetry 설치

# Install Poetry
pipx install poetry

# Update Poetry
pipx upgrade poetry

# Uninstall Poetry
pipx uninstall poetry

# Check Version
Use Poetry

1.3 Poetry Usage

1) 새로운 프로젝트 생성

poetry new <PROJECT-NAME>

2) 프로젝트 구조

3) pyproject.toml

pyproject.toml은 dependency를 관리하는 파일이다. 해당 파일에서 [tool.poetry.dependencies] 아래에 직접 dependecy를 추가할 수 있다. 하지만, 더 편리하게 자동으로 poetry add를 통해 자동으로 dependecy를 추가할 수 있다.

# Install package
$ poetry add <PACKAGE-NAME>

# Uninsatll package
poetry remove <PACKAGE-NAME>

# Show Details of package
poetry show <PACKAGE-NAME>

# See all packages & dependencies
poetry show --tree

# Latest Updates for packages
poetry show --latest

# Export dependencies in requirements.txt
poetry export -f requirements.txt --output requirements.txt

 

poetry add fastapi 한 후에 poetry.lock 파일이 생성된 것을 확인할 수 있다. package 설치하면, 설치한 패키지와 버전을 poetry.lock에 기록한 후, 해당 프로젝트를 lock 한다. 모든 사용자들이 완전히 동일한 version of dependency로 lock 되어 있는 프로젝트를 사용할 수 있다. 협업할 때, 해당 프로젝트에서 모든 사용자가 동일한 dependency를 사용할 수 있기 때문에 충돌이 줄어들 것이다.

2. Poetry Kernel

2.1 Poetry Kernel이란?

Poetry Kernel를 사용하면 Python virtual environment마다 별도의 Jupyter kernel를 설치할 필요가 없다. Poetry 환경을 통해 Jupyter kernel를 실행한다.

2.1 Poetry Kernel 설치

VSCode에서 poetry virtualenvs 보이지 않을때

Jupyter : Select Interpreter to Start Jupyter Server 하는데, poetry virtual envs 가 보이지 않을 때,

# virtual env (커널) path 확인
poetry env info --path

먼저, virtual env 경로를 확인한 후, 

Ctrl + Shift + P 한 뒤

Python: Select Interpreter -> 해당 virtual env를 '+인터프리터 경로 입력'에서 추가해주면 된다.

visual studio code - VSCode doesn't show poetry virtualenvs - Stack Overflow

Reference

https://python-poetry.org/

 

Poetry - Python dependency management and packaging made easy

Dependency resolver Poetry comes with an exhaustive dependency resolver, which will always find a solution if it exists. And get a detailed explanation if no solution exists. Isolation Poetry either uses your configured virtualenvs or creates its own to al

python-poetry.org

https://spoqa.github.io/2019/08/09/brand-new-python-dependency-manager-poetry.html

 

파이썬 의존성 관리자 Poetry 사용기

Poetry를 사용해본 경험을 소개하고 기존의 의존성 관리자 pip와 비교해봅니다.

spoqa.github.io

https://chacha95.github.io/2021-03-27-python7/

 

Poetry란?

python dependency manager Dependency manager는 프로젝트에 대한 모든 dependency를 관리하고 이러한 dependency는 프로젝트에 저장됩니다. Package manager가 사용하고 싶은 package를 관리하는 역할을 한다면, dependency

chacha95.github.io

https://velog.io/@matisse/Poetry-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%82%AC%EC%9A%A9%EA%B8%B0

 

🌱Poetry 설치 및 사용기

Poetry를 공부하기 위해 공식 문서를 (발)번역해보았다. Poetry는 의존성 관리 및 파이썬 내 패키징을 위한 툴이다. 프로젝트가 의존하고 있는 라이브러리들을 관리(설치, 업데이트 등)해준다.

velog.io

https://dailyheumsi.tistory.com/244

 

나의 파이썬 환경 구축기 2 - pyenv + poetry

저번 글에 지금까지 써본 것들에 대한 생각을 주저리 주저리 적었고... 이제 내가 현재 사용하는 파이썬 환경 구축 방법에 대해 본격적으로 이야기해보려 한다. 콘다를 쓰고있었다면..? 지우자

dailyheumsi.tistory.com

https://velog.io/@snoop2head/no-more-conda-please-pyenv-poetry-please

 

conda는 이제 그만 쓸래요 - pyenv & poetry

데이터 분석도, 웹개발도 하고 싶은데 파이썬이 꼬여버렸다!

velog.io

https://blog.gyus.me/2020/introduce-poetry/

 

파이썬 패키지 관리툴 poetry 소개

<h2>poetry 소개</h2> <p><code class="language-text">poetry</code>는 파이썬 의존성 관리 툴입니다. 단순하게 의존성 관리만 잘하는 툴이라면 추천할 이유가 별로 없을 것입니다. <code class="language-text">poetry</code

blog.gyus.me

https://dev.to/mariazentsova/how-to-share-jupyter-notebook-on-github-with-poetry-2cdi https://dev.to/mariazentsova/how-to-share-jupyter-notebook-on-github-with-poetry-2cdi

 

How to share Jupyter Notebook on GitHub with Poetry

Poetry is a dependency management and packaging tool for python. It makes it really easy to create...

dev.to

 

댓글