• Pyenv+Poetry 재현성 중시 Python 프로젝트

히스토리

관련메타

BIBLIOGRAPHY

Poe the poet documentation. (n.d.). Poe the Poet. Retrieved June 30, 2025, from https://poethepoet.natn.io/index.html

Poetry - python dependency management and packaging made easy. (n.d.). Retrieved June 29, 2025, from https://python-poetry.org/

Pyenv/pyenv. (2025). [Computer software]. pyenv. https://github.com/pyenv/pyenv (2012)

2025 Pyenv/Pyenv

(Pyenv/Pyenv, 2012/2025)

Simple Python version management

설치

 
curl -fsSL https://pyenv.run | bash

설정 zsh

echo 'export PYENV_ROOT="HOME/.pyenv"' >> ~/.zshrc
echo '[[ -d PYENV_ROOT/bin ]] && export PATH="PYENV_ROOT/bin:PATH"' >> ~/.zshrc
echo 'eval "(pyenv init - zsh)"' >> ~/.zshrc

2025 Poetry - Python Dependency Management and Packaging Made Easy

(Poetry - Python Dependency Management and Packaging Made Easy, n.d.)

2025 Poe the Poet Documentation

(Poe the Poet Documentation, n.d.)

  • Poe the Poet is a batteries included task runner that works well with poetry or with uv.

  • Poe the Poet는 poetry 또는 uv와 잘 작동하는 배터리 포함(task runner) 도구입니다.

  • It provides a simple way to define project tasks within your pyproject.toml, and either a standalone CLI or a poetry plugin to run them using your project’s virtual environment.

  • pyproject.toml 내에서 프로젝트 작업을 간단히 정의할 수 있으며, 독립 실행형 CLI 또는 poetry 플러그인을 통해 프로젝트의 가상 환경(virtual environment)에서 작업을 실행할 수 있습니다.

  • “Simple things should be simple, complex things should be possible.” – Alan Kay

Poetry plugin 플러그인 ¶

  • The poethepoet poetry plugin offers tighter integration with the poetry CLI.
  • poethepoet 시(poetry) 플러그인은 poetry CLI와 더 긴밀한 통합을 제공합니다.
poetry self add 'poethepoet[poetry_plugin]'

poetry 특정 버전을 설치하도록 명시 하는 방법

[2025-06-30 Mon 16:08] 하단 참고

curl -sSL https://install.python-poetry.org | python3 - --version 1.8.3

Pyenv + Poetry 설치 가이드

[2025-06-30 Mon 15:52]

참고 할 것

1. Pyenv 설정

# Pyenv 설치 (이미 있으면 생략)
curl -fsSL https://pyenv.run | bash
 
# 필요한 빌드 도구 설치 (Ubuntu 예시)
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
 
# Python 설치 (예: 3.10.12)
pyenv install 3.10.12

2. Poetry 설치

# 공식 설치 스크립트 사용 (권장)
curl -sSL https://install.python-poetry.org | python3 -
 
# PATH 설정 (~/.zshrc 또는 ~/.bashrc에 추가)
export PATH="HOME/.local/bin:PATH"
 
# ~/git/junghan0611/llm-twin main !2 ?2 via 🐍 v3.11.8
# ➜ whereis poetry
# poetry: /home/goqual/.local/bin/poetry
# ~/git/junghan0611/llm-twin main !2 ?2 via 🐍 v3.11.8

로그

3. 프로젝트 시작

# Python 버전 지정
pyenv local 3.10.12
 
# 새 프로젝트 생성
poetry new my_project
cd my_project
 
# 가상환경 생성 및 활성화
poetry install
poetry shell
 
# 패키지 추가 (예: PyTorch)
poetry add torch@latest --group main

주의사항 - poetry.lock

  • poetry.lock 파일은 반드시 버전 관리 시스템(Git)에 포함시킬 것
  • =pyproject.toml=에 Python 버전 제약 조건 명시 예: #+begin_src toml [tool.poetry.dependencies] python = “^3.10”

@user

결론: 선택 가이드

도구MLOps/LLMOps 추천도주요 사용 케이스
Miniconda⭐⭐⭐⭐GPU/ML 연구, 복잡한 종속성
Pyenv+Poetry⭐⭐⭐재현성 중시 Python 프로젝트
UV⭐⭐ (아직 성장 중)고속 빌드가 필요한 환경
  • *Conda*는 “ML 연구 단계”에서 유리하지만, *Poetry*는 “프로덕션 배포”에 강점.
  • *UV*는 성능 면에서 유망하지만, 아직 MLOps 생태계 지원이 약함.

로그

2025-06-30

@user MLOps, LLMOps 프로젝트 구축 시게 pyenv poetry를 사용하는 이유?

@assistant Pyenv와 Poetry를 사용하는 주된 이유:

  1. 파이썬 버전 관리 (Pyenv):

    • 프로젝트별로 다른 파이썬 버전 요구사항 대응
    • 멀티 환경에서의 호환성 보장
  2. 의존성 관리 (Poetry):

    • 정확한 패키지 버전 고정 (poetry.lock)
    • 재현 가능한 빌드 환경 구성
    • 패키지 배포 간소화
  3. MLOps/LLMOps 특화 장점:

    • 모델 학습/서빙 환경의 일관성 유지
    • 대규모 라이브러리(예: PyTorch, Transformers) 버전 충돌 방지
    • 협업 시 개발 환경 표준화 용이

간결한 워크플로우: =pyenv=로 파이썬 버전 설정 → =poetry=로 가상환경 및 패키지 관리

@user 위와 같은 목적에서 miniconda와 uv와 비교

@assistant

Miniconda vs Pyenv+Poetry vs UV 비교

1. Miniconda (Conda 기반)

장점:

  • 과학/ML 패키지 최적화: PyTorch, TensorFlow 등 대규모 라이브러리 설치 용이 (Conda 채널 지원)
  • 통합 환경 관리: Python 버전 + 패키지 + 가상환경을 한 번에 관리 (conda env)
  • 비-Python 종속성 지원 (CUDA, R 등)

단점:

  • 용량 크고 느림 (기본 패키지 많음)
  • *의존성 해결이 복잡*할 때가 있음 (conda vs pip 충돌)
  • lock 파일 관리 불편 (Poetry보다 재현성 ↓)

적합한 경우:

  • ML 연구용 로컬 환경 (GPU 연동 등)
  • Python 외 종속성 필요한 경우

2. Pyenv + Poetry

장점:

  • 경량 & 빠름 (Miniconda 대비)
  • 의존성 관리 정교함 (poetry.lock으로 재현성 ↑)
  • 패키지 배포 간편 (pyproject.toml 통합)

단점:

  • ML 패키지 설치 시 pip에 의존 (Conda보다 느리거나 실패 가능성 ↑)
  • 비-Python 종속성 관리 불가

적합한 경우:

  • Python 순수 프로젝트
  • 협업 시 환경 표준화 필요할 때

3. UV (Rust 기간 고속 패키지 관리자)

장점:

  • 초고속 의존성 해결 (Poetry/Conda보다 10~100배 빠름)
  • 경량 & 현대적 (Rust 기반)
  • pip/conda 호환

단점:

  • 새로운 도구 → 생태계 아직 성장 중
  • ML 특화 기능 부재 (Conda 채널 미지원)

적합한 경우:

  • 빠른 빌드가 중요한 CI/CD 환경
  • 대규모 프로젝트에서 의존성 해결 시간 단축 필요 시

@user pyenv 환경에서 poetry 설치 방법

@assistant

Pyenv + Poetry 설치 가이드

1. Pyenv 설정
# Pyenv 설치 (이미 있으면 생략)
curl -fsSL https://pyenv.run | bash
 
# 필요한 빌드 도구 설치 (Ubuntu 예시)
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
 
# Python 설치 (예: 3.10.12)
pyenv install 3.10.12
2. Poetry 설치
# 공식 설치 스크립트 사용 (권장)
curl -sSL https://install.python-poetry.org | python3 -
 
# PATH 설정 (~/.zshrc 또는 ~/.bashrc에 추가)
export PATH="HOME/.local/bin:PATH"
3. 프로젝트 시작
# Python 버전 지정
pyenv local 3.10.12
 
# 새 프로젝트 생성
poetry new my_project
cd my_project
 
# 가상환경 생성 및 활성화
poetry install
poetry shell
 
# 패키지 추가 (예: PyTorch)
poetry add torch@latest --group main
주의사항
  • poetry.lock 파일은 반드시 버전 관리 시스템(Git)에 포함시킬 것
  • =pyproject.toml=에 Python 버전 제약 조건 명시 예: #+begin_src toml [tool.poetry.dependencies] python = “^3.10”

@user poetry 특정 버전을 설치하도록 명시 하는 방법

@assistant Poetry의 특정 버전을 설치하는 방법은 다음과 같습니다:

  1. 공식 설치 스크립트 사용 시 버전 지정:
# 특정 버전(예: 1.4.2) 설치
curl -sSL https://install.python-poetry.org | python3 - --version 1.4.2
  1. pip를 이용한 설치 (대체 방법):
# pyenv 가상환경 활성화 후
pip install poetry==1.4.2
  1. 이미 설치된 경우 버전 변경:
# 기존 버전 제거 후 재설치
poetry self uninstall
curl -sSL https://install.python-poetry.org | python3 - --version 1.4.2
  1. 버전 확인:
poetry --version
# 예상 출력: Poetry (version 1.4.2)

주의사항:

  • 프로젝트 호환성을 위해 =pyproject.toml=에 명시된 Poetry 버전 제약 조건 확인
  • 특정 버전이 필요한 경우 팀 전체에서 동일한 버전 사용 권장
  • 최신 버전 대신 구버전 사용 시 알려진 보안 취약점 확인 필요

버전 선택 가이드:

  • 일반적인 사용: 최신 안정판 (현재 2.1.3)
  • 레거시 프로젝트: 프로젝트 요구사항에 맞는 버전
  • CI/CD 환경: 모든 멤버가 동일한 버전 사용

@user