개발언어 Back-End/Python

파이썬 버전 관리 도구 pyenv, 패키지 관리도구 Poetry 총 정리 - 완결편

bluebamus 2023. 11. 3.

* 많은 글을 읽고 판단한 결과 pip과 curl 설치 중 pip으로 설치하기로 했다. 현재 python만 설치하고 venv 내부에서 pip을 사용하기에 일반 커널에서는 pip을 설치하지 않았었지만, 이로인해 설치하기로 결정하게 되었다. 아래 단점들은 chatgpt로 정리한 내용이지만, 많은 포스팅 내용과 그렇게 차이가 나지 않는다.

 

 - 가장 큰 이유로 개발환경에서는 쉽게 삭제하고 업그레이드 가능한 상태가 필요하다. 때문에 기본 사용은 pip으로 설치하고 사용할 계획이다.

 - 개발에서 필요한 가상환경도 Poetry로 진행할 계획이다.

 - 상용 서비스는 docker를 사용하기 때문에 curl로 설치할 계획이다. 단독 혹은 python과 관련된 서비스 패키지들만 사용할 것이기 때문에 별 다른 고민이 필요 없다.

 

 

- curl로 설치할 경우 문제점 (chatgpt)

   - 웹에서 직접 컬을 사용하여 Poetry를 설치하는 것은 기존 설치 방법(예: pip 사용)에 비해 몇 가지 단점이 있을 수 있습니다. 다음은 몇 가지 잠재적인 단점입니다.

   -  보안 위험: 컬을 사용하여 소프트웨어를 설치하면 기본적으로 인터넷에서 스크립트를 다운로드하고 실행하게 됩니다. 소스나 스크립트의 무결성이 확실하지 않으면 위험할 수 있습니다. 악의적이거나 손상된 스크립트를 다운로드할 가능성이 있습니다.

   -  버전 관리 부족: 컬을 사용하여 Poetry를 설치하면 다운로드 시 최신 버전을 사용할 수 있습니다. 이로 인해 특정 Poetry 버전을 사용하는 프로젝트나 기타 도구와의 호환성 문제가 발생할 수 있습니다. pip와 같은 기존 설치 방법을 사용하면 설치하려는 버전을 지정할 수 있습니다.

   -  종속성 해결 없음: 컬을 통해 Poetry를 설치해도 종속성은 해결되지 않습니다. Poetry는 올바르게 작동하기 위해 특정 Python 패키지 및 종속성에 의존하며, Poetry를 설치하기 위해 pip를 사용하면 이러한 종속성을 자동으로 처리합니다. 컬을 수동으로 사용하면 종속성이 누락되거나 일치하지 않을 수 있습니다.

   -  유지 관리 문제: 컬을 사용하여 소프트웨어를 설치할 때 업데이트 및 제거 관리가 더 어려울 수 있습니다. pip와 같은 기존 패키지 관리자를 사용하면 패키지를 보다 쉽게 업데이트, 제거 또는 지속적으로 관리할 수 있습니다.

   -  배포 및 이식성: 컬을 사용하여 Poetry를 설치하는 경우 Python 패키지만큼 쉽게 배포되거나 이식 가능하지 않을 수 있습니다. 요구 사항.txt 파일에 Poetry를 포함하거나 프로젝트에 대한 가상 환경을 설정하는 것은 그리 간단하지 않습니다.

   -  일반적으로 pip와 같은 표준 패키지 관리자를 사용하여 Poetry를 포함한 Python 패키지를 설치하고 관리하는 것이 좋습니다. 왜냐하면 종속성 및 소프트웨어 버전을 관리하는 보다 안전하고 제어된 방법을 제공하기 때문입니다. 설치에 컬을 사용하기로 선택한 경우 신뢰할 수 있는 소스에서 스크립트를 다운로드하고 주의를 기울이십시오.

 

 

- pip으로 설치하게 될 경우 문제점 (chatgpt)

   -   pip를 사용하여 Poetry를 설치하는 것이 일반적이고 권장되는 방법이지만 잠재적인 단점을 인식하는 것이 중요합니다. 고려해야 할 몇 가지 단점은 다음과 같습니다.

   -   전역 설치: pip를 사용하여 Poetry를 설치하면 일반적으로 Python 환경 내에서 전역으로 설치됩니다. Poetry 버전이나 종속성이 다른 여러 프로젝트가 있는 경우 충돌이 발생할 수 있습니다. 이를 완화하기 위해 가상 환경을 사용할 수 있지만 여러 가상 환경을 관리하는 것은 복잡할 수 있습니다.

   -   종속성 충돌: Poetry 자체에는 자체 종속성이 있으므로 pip를 사용하여 설치하면 환경의 다른 Python 패키지와 충돌이 발생할 수 있습니다. 이러한 충돌은 즉시 명백하지 않을 수 있으며 프로젝트에 문제를 일으킬 수 있습니다.

   -   제한된 격리: Poetry는 각 프로젝트에 대해 가상 환경을 생성하지만 conda 또는 Pipenv와 같은 다른 종속성 관리자와 동일한 수준의 격리를 제공하지 않습니다. 프로젝트에 대해 엄격한 격리 요구 사항이 있는 경우 추가 가상 환경을 수동으로 설정해야 할 수도 있습니다.

   -   업그레이드 및 제거: pip로 설치하면 Poetry를 업그레이드하거나 제거하는 것이 더 어려울 수 있습니다. 올바른 Python 환경에서 작업하고 있는지, Poetry에 의존하는 다른 패키지를 실수로 제거하지 않았는지 확인해야 합니다.

   -   비표준 설치: Poetry는 자체 패키지로 설계되었으며 일관되고 격리된 환경을 보장하기 위해 자체 설치 방법(get-poetry)을 제공합니다. pip를 사용하여 설치하는 것은 가능하지만 권장되는 방법은 아닙니다.

   -   요약하면 pip를 사용하여 Poetry를 설치하는 것이 일반적인 방법이지만 종속성 관리 및 프로젝트 격리와 관련된 몇 가지 문제가 발생할 수 있습니다. 패키지 및 프로젝트 관리에 Poetry를 사용하는 경우 Poetry에 대한 격리된 환경을 설정하고 호환성과 일관성을 보장하는 get-poetry를 사용하는 공식 설치 방법을 따르는 것을 고려해보세요.

 

1. 설치하기

- curl

   - Linux, macOS, Windows (WSL)

curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -
curl -sSL https://install.python-poetry.org | python3 -

 

 - Windows (Powershell)

(Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py -UseBasicParsing).Content | python -
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -

 

 - pip

pip install --user poetry

 

 - tab 기반 자동완성 설정하기

      - zsh, fish, bash를 사용할 경우 tab으로 자동완성 설정을 할 수 있다.

      - 1 depth밖에 지원을 안해서 유용성에 고민을 할 필요가 있다. 모를땐 help가 더 빠를 경우가 있다.

      - tab 사용에 오류가 발생한다면 아래 명령어 참고

brew install bash-completion source $(brew --prefix)/etc/bash_completion

      - reference : https://python-poetry.org/docs/#installing-with-the-official-installer

      - reference : https://blog.flynnpark.dev/15

# Bash
$ poetry completions bash > /etc/bash_completion.d/poetry.bash-completion

# Bash (Homebrew)
$ poetry completions bash > $(brew --prefix)/etc/bash_completion.d/poetry.bash-completion

# Fish
$ poetry completions fish > ~/.config/fish/completions/poetry.fish

# Fish (Homebrew)
$ poetry completions fish > (brew --prefix)/share/fish/vendor_completions.d/poetry.fish

# Zsh
$ poetry completions zsh > ~/.zfunc/_poetry

# Oh-My-Zsh
$ mkdir $ZSH_CUSTOM/plugins/poetry
$ poetry completions zsh > $ZSH_CUSTOM/plugins/poetry/_poetry

# prezto
$ poetry completions zsh > ~/.zprezto/modules/completion/external/src/_poetry

      - zsh 사용시 ~/.zshrc 파일 compinit 이전에 코드를 추가한다

fpath+=~/.zfunc

      - oh-my-zsh를 사용할 경우 ~/.zshrc에 코드를 추가한다.

plugins = (
    poetry
    # ...
)

 

 

2. 기본 설정

   - 설정 하는 방법은 다양하다. 때문에 혼란스러울 수도 있지만, 크게 3가지로 나눌 수 있을것 같다.

   1) poetry new my-project

      - 명령어 :

poetry new {poetry-demo}

      - 자동 생성된 프로젝트 구조 :

         - 만약, django와 같이 프로젝트 구조가 별도로 요구되는 프레임워크를 사용한다면 적합하지 않다.

poetry-demo
├── pyproject.toml
├── README.rst
├── poetry_demo
│   └── __init__.py
└── tests
    ├── __init__.py
    └── test_poetry_demo.py

 

   2) poetry init을 이용해 자동 생성

      - 만약 기존 프로젝트에 사용하고 싶다면 해당 커맨드를 사용한다

      - 프로젝트 root 위치로 이동하여 명령어를 실행한다

      - 명령어 :

poetry init

 

      - 설정 화면 (모두 yes를 하는 경우)

This command will guide you through creating your pyproject.toml config.

Package name [django-test]:
Version [0.1.0]:  
Description []:  
Author [bluebamus <bluebamus@naver.com>, n to skip]:  
License []:  
Compatible Python versions [^3.11]:  

Would you like to define your main dependencies interactively? (yes/no) [yes] yes
You can specify a package in the following forms:
  - A single name (requests): this will search for matches on PyPI
  - A name and a constraint (requests@^2.23.0)
  - A git url (git+https://github.com/python-poetry/poetry.git)
  - A git url with a revision (git+https://github.com/python-poetry/poetry.git#develop)
  - A file path (../my-package/my-package.whl)
  - A directory (../my-package/)
  - A url (https://example.com/packages/my-package-0.1.0.tar.gz)

Package to add or search for (leave blank to skip): yes
Found 20 packages matching yes
Showing the first 10 matches

Enter package # to add, or the complete package name if it is not listed []:
 [ 0] yes
 [ 1] yes24
 [ 2] fuck-yes24
 [ 3] yes-no-words
 [ 4] yes-or-no
 [ 5] yes-no-very-good
 [ 6] new-lib
 [ 7] test-secret
 [ 8] odinwolf
 [ 9] SimpleQuestions
 [ 10] 
 > 

No package selected

Add a package (leave blank to skip): 

Would you like to define your development dependencies interactively? (yes/no) [yes] yes
Package to add or search for (leave blank to skip): 

Generated file

[tool.poetry]
name = "django-test"
version = "0.1.0"
description = ""
authors = ["bluebamus <bluebamus@naver.com>"]
readme = "README.md"

[tool.poetry.dependencies]
python = "^3.11"


[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

   - "Compatible Python versions" 항목에서 ^(꺽쇠)의 이미는 해당 버전 중 최상위 버전을 사용하겠다는 의미이다.

      - ">=3.6.2,<3.10" 등으로 입력해 특정 범위 안의 버전이 사용되도록 할 수 있다.

   -  "Would you like to define your development dependencies interactively? (yes/no)" 항목에서 yes라 누르면 현재 설치되어 있는 패키지들을 검색해 번호가 매겨진 목록으로 출력해주고, 사용자는 해당 목록 번호를 입력해 설치 할 수 있다. 

      - 설치시 버전을 직접 지정할 수 있고, 지정하지 않을 경우 최신 버전을 알아서 선택해준다. 

   - "Would you like to define your development dependencies interactively? (yes/no)" 항목은 새로 생긴 것 같다. 이전 사용자들의 글에는 해당 항목을 확인할 수 없었다. 추가로 개발 전용 의존성을 정의하는 항목이다.

 

   3) pyproject.toml 파일 직접 생성

 - 만약, 정확한 패키지들에 대한 목록을 가지고 있고 수작업으로 직접 만들 경우 touch 등의 명령어를 이용해 직접 파일을 만들고 내용을 정의할 수 있다.

   - 직접 작성한 파일 예시 :

[tool.poetry]
name = "django-test"
version = "0.1.0"
description = ""
authors = ["bluebamus <bluebamus@naver.com>"]
readme = "README.md"

[tool.poetry.dependencies]
python = "^3.11"


[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

 

 

3. pyproject.toml 파일 

   - 기본 pyproject.toml :

[tool.poetry]
name = "django-test"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]
readme = "README.md"

[tool.poetry.dependencies]
python = "^3.11"


[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

 

 

4. 기본 사용 방법

 - 공식 사이트 command 항목 : https://python-poetry.org/docs/master/cli/#options-1

 

 - init

   - 프로젝트의 최상위 root에서 실행, pyproject.toml 파일 자동 생성

poetry init

 

 - add

   - 패키지를 설치하고 pyproject.toml 에 추가한다.

   - tool.poetry.group.<group>.optional : true로 설정하면 실행시 --with {group} 옵션을 사용해야 설치가 된다.

poetry add {패키지 이름}

poetry add django

# 개발환경에서 필요한 패키지 설치
poetry add pytest factory-boy --dev

# 사용자가 정의한 group에 패키지 설치
poetry add pytest factory-boy --group=test

# 버전을 지정가능
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

# source에 있는 패키지 설치
poetry add pytest factory-boy --source={source}

# repository에 있는 패키지 설치
# flags : --default: 추가될 소스를 기본 소스로 설정하고 PyPI를 비활성화 합니다
poetry add <source> <url> [<flags>]

   - poetry는 기본적으로 의존성을 pypi에서 찾는다. 하지만, 상황에 따라 별도의 레포지토리를 사용해야 하는 경우가 있다. 이 경우 tool.poetry.repositories 부분을 설정해 줘야 한다.

[[tool.poetry.repositories]]
name = "{레포지토리 이름}"
url = "{레포지토리 URL}"

 

 - remove

   - 패키지를 삭제하고 pyproject.toml 에서 제거한다.

poetry remove {패키지 이름}

 

 - show

   - 현재 환경에 설치된 패키지 정보를 보여준다.

# 설치된 모든 패키지를 보여준다.
poetry show

# 개발환경용 제외하고 보여준다.
poetry show --no-dev

# 특정패키지를 지정하면 상세내용을 보여줍니다.
poetry show django

# 최신 버전을 보여준다.
poetry show --latest (-l)

# 업데이트를 해야하는 패키지들을 보여준다.
poetry show --outdate (-o)

# 의존성 트리를 보여준다.
poetry show --tree

 

 - install

   - install 커맨드는 현재 프로젝트의 pyproject.toml 파일을 읽어 의존성 패키지를 설치해준다.

   - poetry.lock 파일이 없으면 만들어주고 있으면 해당파일을 기반으로 정의된 버전을 설치하게 된다.

# 의존성 설치
poetry install

# 개발환경의 의존성은 빼고 설치
poetry install --no-dev

# -E 또는 --extras 로 추가 의존성을 설정가능
poetry install --extras "mysql redis"
poerty install -E mysql -E redis
<flags>
--no-root: 개발 중인 패키지를 editable 상태로 설치하는 것을 제외하고 설치합니다.
--remove-untracked: lock 파일에 더 이상 존재 하지 않는 것은 삭제합니다.
--with=<group>[,<group>]: <group>에 있는 의존성을 설치합니다.
--without=<group>[,<group>]: <group>에 있는 의존성을 설치하지 않습니다.
--only=<group>[,<group>]: <group>에 있는 의존성만 설치합니다.

 - 의존성을 설치하게 되면 poetry는 먼저 poetry.lock파일의 유무를 확인한다.

   - 없는 경우 : 처음 install을 실행하는 경우이며 poetry.lock 파일이 없는 경우, pyproject.toml의 의존성들을 최선 버전으로 설치한다. 이후 설치된 패키지들의 버전 정보를 기반으로 poetry.lock 파일을 생성한다.

   - 있는 경우 : poetry.lock 파일에 나열된 정확한 버전을 설치해서 모든 프로젝트 작업자의 환경을 일치시켜 줍니다. 결과적으로 pyproject.toml에 정의된 모든 의존성은 해결되지만, 모든 의존성이 최신 버전이 아닐 수 있습니다.

   - 이러한 이유로 여러명이 동일한 환경의 프로젝트를 개발하고 있다면, 동일한 poetry.lock 파일을 사용해 환경을 구축할 수 있도록 반드시 커밋을 유지해야 합니다. 

 

 - update

   - 의존성 패키지의 버전을 업데이트 하고 poetry.lock 파일도 함께 업데이트 한다.

# 패키지 업데이트
poerty update

# 하나씩 지정해서 업데이트도 가능
poetry update requests toml

# 업데이트는 하지 않고 poetry.lock 만 업데이트
poerty update --lock

 

 - Docker에서 사용 하는 경우

   - Dockerfile을 빌드할 때 일반적인 방법을 사용하면 "doest not contain any element" 등의 오류가 발생할 수 있다.

      - 이것은 packages = []가 설정되어 있어 상위 디렉토리까지 의존성을 확인하는 것이 원인이다.

   - 해결 방법

      - poetry install에 --no-root 옵션을 준다.

poetry install --no-root

      - packages = [] 라인 자체를 삭제한다.

packages = [{include = "style_transfer"}]

   - reference : https://python-poetry.org/docs/basic-usage/

   - reference : https://stackoverflow.com/questions/75397736/poetry-install-on-an-existing-project-error-does-not-contain-any-element

 

 - config

   - poetry 관련 설정을 변경할 수 있다.

# 설정보기
poetry config --list

# 설정법
poetry config [options] [setting-key] [setting-value1] ... [setting-valueN]
poetry config virtualenvs.create false #  가상환경 생성하지 않음 (Dockerfile에 사용)
# private repository에서 설치를 위한 인증 토큰 등록
# Dockerfile 내

poetry config repo.spoqa-private-repository https://some.private.repository.com/ &&\
poetry config http-basic.spoqa-private-repository ${USERNAME} ${PASSWORD}

 

 - run & shell

   - run : 프로젝트의 virtualenv에 커맨드를 전달하여 1회성 실행을 하게 만든다.

poetry run python <my-script>.py -args
poetry run pytest
poetry run pytest -sv tests
poetry run django-admin startproject config
poetry run celery -A celery_routing worker -Q default,fast --hostname=default@%h -l info --concurrency 1

   - shell : shell 명령어를 통해 가상화 상태로 진입하여 지속적인 명령 대기 상태로 만든다.

poetry shell

 

 - check

   - pyproject.toml의 유효성을 확인/검토하는 명령어이다. 

 

 - search

   - 패키지를 찾기위한 커맨드이다.

   - 예를 들어 beautifulsoup 의 패키지명의 철자가 기억이 안나고 beautiful 만 기억난다면 다음과 같이 할 수 있다.

poetry search beautiful | grep soup

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

 

 - lock

   - pyproject.toml에 설정된 의존성들에 대한 lock 파일을 생성합니다.

 

 - export

   - lock 파일을 사용해서 다른 의존성 포맷으로 변경할 수 있다.

poetry export -f requirements.txt > requirements.txt

 

 - build

   - 소스를 배포가능한 형태로(tarball, wheel)빌드한다.

poetry build

 

 - publish

   - PyPI에 배포한다.

poerty publish

 

 

5. 가상환경 생성 및 관리

 - 가상환경을 프로젝트 환경 설정

   - 기본적으로 poetry는 {cache-dir}/virtualenvs 디렉토리에 가상환경을 생성한다. 이 경로는 cache-dir + virtualenvs.path에 설정된 값을 기반으로 하기 때문에 사용자가 임의로 설정이 가능하다.

   - virtualenvs.in-project 값은 기본이 false이다. true로 변경하면 가상환경 생성시 프로젝트 내에 위치하게 할 수 있다.

# 가상환경이 프로젝트 내부에 위치하도록 수정
poetry config virtualenvs.in-project true

   - 직접 수동으로 가상환경을 활성화 할 수 있다.

source {path_to_venv}/bin/activate
source $(poetry env info --path)/bin/activate # 명령어로 한 줄로 실행할 수 있다
deactivate # 가상화 비활성화 / 나가기

 

 - env

   - 가상환경 관리하기

      - 구글에서 관련한 정보를 찾기 힘들어 테스트한 결과와 예상을 가지고 정의를 해본다.

         - pip -m venv {생성될 가상환경 경로}를 이용해 직접 생성하고 가상환경을 통해 pip으로  poetry를 설치한 경우, poetry는 새로 가상환경을 생성하지 않는다. 

            - 가상환경의 python, 윈도우 system의 python 두 개 모두 "poetry env use"로 설정해 보았음에도, 가상환경은 새로 생성되지 않고 이미 생성된 가상환경을 선택한다.

      - curl로 설치한 경우에 대해 가상환경을 생성할 수 있을거라 판단된다. 영상 및 문서들을 확인하면 "poetry env use python3"를 입력할 경우, 정의된 위치에 가상환경이 생성되는 것을 확인할 수 있었다,.

      - 기본 설치 위치는 "poetry config --list"로 확인할 수 있다. 프로젝트 폴더에 생성하도록 설정할 수도 있다.

poetry env use {파이썬경로}

 

   - 가상환경 정보보기

poetry env info
Virtualenv
Python:         3.11.4
Implementation: CPython
Path:           C:\Users\test\Downloads\test\test_env
Executable:     C:\Users\test\Downloads\test\test_env\Scripts\python.exe
Valid:          True

System
Platform:   win32
OS:         nt
Python:     3.11.4
Path:       C:\Users\test\AppData\Local\Programs\Python\Python311
Executable: C:\Users\test\AppData\Local\Programs\Python\Python311\python.exe

      - 단순하게 가상환경 path만 알고 싶은 경우

poetry env info --path

 

   - 가상환경 리스트 보기

poetry env list

 

   - 가상환경 삭제하기

      - 만약 삭제가 되지 않는다면, env info 등으로 경로를 확인하여 강제 삭제를 해도 된다.

poetry env remove {python경로}

 

 

6. django 프로젝트에서 사용 예시

 - django에서 python 명령어를 대신하여 poetry를 사용한 예시

# 새로운 프로젝트 생성
poetry new djangoProject
cd djangoProject
# 의존성 추가
poetry add django 
# django 프로젝트 생성
poetry run django-admin startproject demoproject .
# 새로운 앱 추가
poetry run python manage.py startapp poll
# 서버 실행
poetry run python manage.py runserver

 

 

7. multi dependency 사용 방법

 - pyproject.toml 파일 재정의

[tool.poetry]
name = "django-test"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]
readme = "README.md"

[tool.poetry.dependencies]
python = "^3.11"
Django = "^4.2.7"


[tool.poetry.group.test.dependencies]
coverage = "^7.3.2"
pytest = "^7.4.3"


[tool.poetry.group.dev.dependencies]
django-debug-toolbar = "^4.2.0"


[tool.poetry.group.stage.dependencies]
celery = "^5.3.4"
django-celery-beat = "^2.5.0"
django-celery-results = "^2.5.1"


[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

 

 - poetry install 설치

   - 기본 포함 모든 group의 패키지들이 설치된다.

 

 - poetry install --with test 설치

   - 기본적으로 install 명령어는 전체 설치이기 때문에 with의 사용 유무와 관계 없이 test group 패키지도 설치가 된다.

 

 - poetry install --without test,dev 설치

   - pytest를 포함한 test, dev group의 패키지들은 설치가되지 않는 것을 확인할 수 있다.

 

 - poetry install --only stage 설치

   - main 패키지인 python, django가 설치되지 않고 오직 stage group의 패키지만 설치된다.

 

 - 특정 group의 모든 패키지를 삭제하는 방법이 없다. 공식 메뉴얼 포함 구글의 어떤 문서에서도 확인할 수 없었다.

 - 만약 main을 포함한 특정 패키지들을 설치하고 싶다면 --without을 사용하여 group들을 제외시키는 것 외엔 방법이 없다.

 

 

8. 기타 사항

 - oh my zsh에서 에러가 발생하는 경우

zsh: command not found Poetry

 

   - 기본 path 삭제 (아래 항목 삭제 or 주석 처리)

# If you come from bash you might have to change your $PATH.
export PATH=$HOME/bin:/usr/local/bin:$PATH

 

   - 아래 항목을 상위 항목 아래에 추가

export PATH="$HOME/.local/bin:$PATH"

 

 

 

reference - django usage cases :

https://builtwithdjango.com/blog/basic-django-setup

 

Setting up a basic Django project with Poetry

In this tutorial, we will go through the process of setting up the most basic Django project with Poetry. We will use that as a setup up for other posts and tutorials.

builtwithdjango.com

https://tae-seokyoung.tistory.com/entry/poetry

 

05.08. [술술술_project. 1] 프로젝트 회의, 세팅 / poetry / django-taggit / pylint

0. 오늘 배운 것 1) poetry https://python-poetry.org/docs/ # 설치하기 curl -sSL https://install.python-poetry.org | python3 - #가상환경 설치 poetry init #몇 가지를 입력할 수 있도록 표시가 될텐데, 쭉 엔터 치다가 #yes/no

tae-seokyoung.tistory.com

https://velog.io/@brown_eyed87/220923Poetry-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0

 

220923_Poetry 사용하기

Poetry 시작하기. 명령어 알아두기

velog.io

https://wooriworld2006.tistory.com/514

 

Start Django project with Python DI manager poetry

Poetry 설치 공식 문서 참고 Introduction | Documentation | Poetry - Python dependency management and packaging made easy Using alternative installation methods will make Poetry always use the Python version for which it has been installed to create

wooriworld2006.tistory.com

 

 

reference : 

https://python-poetry.org/docs/

 

Introduction | Documentation | Poetry - Python dependency management and packaging made easy

If you installed using the deprecated get-poetry.py script, you should remove the path it uses manually, e.g. rm -rf "${POETRY_HOME:-~/.poetry}" Also remove ~/.poetry/bin from your $PATH in your shell configuration, if it is present.

python-poetry.org

https://lswkim322.gitbook.io/til/til-ml/untitled-2/poetry-dependency

 

Poetry로 dependency 관리 - TIL

install 커맨드는 현재 프로젝트의 pyproject.toml 파일을 읽어서 의존성 패키지를 설치해줍니다. poetry.lock 이 없으면 만들어주고 있으면 해당파일을 사용하게됩니다.

lswkim322.gitbook.io

https://builtwithdjango.com/blog/basic-django-setup

 

Setting up a basic Django project with Poetry

In this tutorial, we will go through the process of setting up the most basic Django project with Poetry. We will use that as a setup up for other posts and tutorials.

builtwithdjango.com

https://velog.io/@matisse/Poetry-설치-및-사용기

 

🌱Poetry 설치 및 사용기

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

velog.io

https://blog.naver.com/PostView.naver?blogId=wooy0ng&logNo=222988404966

 

(tip) Poetry 파이썬 패키지 관리도구

Poetry 개요 Poetry는 파이썬 가상환경 및 의존성 관리 소프트웨어이다. 기존에 pyenv나 virtualenv를 잘...

blog.naver.com

https://pythonistaplanet.com/poetry/

 

Python Poetry Tutorial | Pythonista Planet

When it comes to virtual environments, Python has several options like virtualenv, pipenv, conda, etc., and they do a fantastic job in keeping Python libraries…

pythonistaplanet.com

https://realpython.com/dependency-management-python-poetry/

 

Dependency Management With Python Poetry – Real Python

Learn how Python Poetry will help you start new projects, maintain existing ones, and master dependency management.

realpython.com

https://mingchin.tistory.com/445

 

[Poetry/협업] 가상 환경 및 의존성 관리 도구

지금까지 알고 있었던 패키지 관리 도구는 pip와 이를 활용한 requirement.txt 정도가 있었고, 가상 환경의 경우 anaconda를 활용하고 virtualenv 라는 게 있다더라, 정도를 알고 있는게 전부였다. 가상환경

mingchin.tistory.com

https://mixedprograming.tistory.com/35

 

poetry를 사용한 파이썬 dependency관리

목차 서론 poetry가 1.2 버전으로 업데이트하면서 기존의 main, dev 이외의 group을 추가하여 dependency가 관리가 가능해졌습니다. 그에 대하여 간단한 명령어 및 사용 결과를 서술하는 페이지입니다. 본

mixedprograming.tistory.com

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

 

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

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

spoqa.github.io

 

poetry.lock :

https://bskyvision.com/entry/python-%ED%8C%A8%ED%82%A4%EC%A7%80-%EA%B4%80%EB%A6%AC%EC%9E%90-poetry%EC%9D%98-pyprojecttoml%EA%B3%BC-poetrylock

 

[python] 패키지 관리자 poetry의 pyproject.toml과 poetry.lock

파이썬에서 보통 패키지를 설치하고 의존성을 관리할 때 pip이라는 패키지 관리자를 사용합니다. 저도 얼마 전까지 pip이라는 것만 알고 살았습니다. 하지만, 최근에 poetry라는 친구를 알게 되었

bskyvision.com

https://blog.flynnpark.dev/15

 

Poetry로 파이썬 의존성 관리하기

Poetry? 파이썬에서 사용하는 의존성 관리자는 몇 가지가 있습니다. 파이썬의 공식 의존성 관리자인 pip, 그리고 pip와 virtualenv를 같이 사용할 수 있는 Pipenv가 있고, 이번에 소개할 Poetry가 있습니다.

blog.flynnpark.dev

 

with pyenv :

https://velog.io/@insutance/use-poetry-goodbye-pip

 

poetry를 사용해 패키지 관리하기 (feat. pip)

pip를 버리고 poetry로 넘어가 볼까?

velog.io

https://mattpy.tistory.com/entry/pyenv-poetry-%EC%A1%B0%ED%95%A9%EC%9C%BC%EB%A1%9C-%EB%8B%A4%EC%96%91%ED%95%9C-python-%EB%B2%84%EC%A0%84-%EA%B0%9C%EB%B0%9C%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%84%B1

 

pyenv + poetry 조합으로 다양한 python 버전 개발환경 구성

오랜만에 글을 쓰게 됐네요. 다른 언어도 마찬가지이겠지만 파이썬으로 개발을 할 때 두 가지 경우가 있습니다. 1. 처음부터 프로젝트를 시작하거나 2. 이미 진행되고 있는 프로젝트에 참여하거

mattpy.tistory.com

 

댓글