hello

Poetry 사용법 정리

Poetry는 Python의 현대적인 패키지 및 의존성 관리자입니다. 복잡한 의존성 문제를 자동으로 해결하고, 가상 환경 관리, 패키지 빌드 및 배포까지 도와주는 도구입니다.

다음은 Python 패키지 관리자 Poetry에 대한 블로그 형식의 정리입니다. 초보자도 이해할 수 있도록 개념부터 설치, 사용법까지 친절하게 설명드리겠습니다.


📌 Poetry란?

Poetry는 Python의 현대적인 패키지 및 의존성 관리자입니다. 복잡한 의존성 문제를 자동으로 해결하고, 가상 환경 관리, 패키지 빌드 및 배포까지 도와주는 도구입니다.

✅ 주요 기능

  • 의존성 자동 관리 및 충돌 방지
  • 가상 환경 생성 및 관리
  • 프로젝트 초기화 및 구조 자동 생성
  • 빌드 및 퍼블리시 지원
  • pyproject.toml 기반의 설정 관리

🛠️ Poetry 설치 방법

🔸 macOS 사용자 (Homebrew)

brew install poetry

🔸 모든 플랫폼 공통 (스크립트 설치)

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

설치가 완료되면, poetry --version으로 설치 여부를 확인해보세요.


📁 Poetry로 프로젝트 시작하기

1. 새 프로젝트 생성

poetry new poetry-demo

📁 생성된 구조

poetry-demo
├── pyproject.toml         # 프로젝트 및 의존성 설정
├── README.rst             # 프로젝트 설명
├── poetry_demo/           # 실제 코드 위치
│   └── __init__.py
└── tests/                 # 테스트 코드
    ├── __init__.py
    └── test_poetry_demo.py

2. 기존 프로젝트에 Poetry 적용

poetry init

질문에 답하면서 pyproject.toml 파일을 생성하게 됩니다.


🧪 가상 환경(Virtualenv) 관리

가상 환경 생성

poetry env use python3

가상 환경 진입

poetry shell

프로젝트 내부에 가상환경 생성

poetry config virtualenvs.in-project true

이렇게 하면 .venv/ 폴더가 프로젝트 내에 생성됩니다.

현재 가상환경 정보 확인

poetry env info

가상환경 리스트 확인

poetry env list

가상환경 제거

poetry env remove <환경명>

⚙️ Poetry 설정 정보 확인

poetry config --list

📦 의존성 패키지 관리

패키지 검색

poetry search fastapi

패키지 추가

poetry add fastapi==0.111.0        # 일반 의존성
poetry add -D pylint               # 개발용 의존성 (-D)

직접 pyproject.toml에 작성

[tool.poetry.dependencies]
fastapi = "^0.111.0"

패키지 제거

poetry remove fastapi
poetry remove -D fastapi

📋 패키지 정보 확인

poetry show                   # 설치된 패키지 리스트
poetry show --tree           # 의존성 트리 구조 보기
poetry show --no-dev         # 운영용 패키지만 보기

📥 의존성 설치 및 업데이트

패키지 설치

poetry install

전체 업데이트

poetry update

특정 패키지 업데이트

poetry update fastapi

🌍 사용자 지정 패키지 레포지토리 설정

[[tool.poetry.repositories]]
name = "custom-repo"
url = "https://your.repo.url/simple"

Read more

TCP 공부하기

TCP(전송 제어 프로토콜) 개요 TCP는 불안정한 네트워크 환경에서도 신뢰성 있고 순서가 보장된 데이터 전송을 가능하게 하는 핵심 인터넷 프로토콜이다. IP가 호스트 간 패킷 전달만을 담당한다면, TCP는 포트 기반 프로세스 간 통신, 오류 복구, 재전송, 순서 제어를 제공한다. 흐름 제어와 혼잡 제어를 통해 TCP는 수신 버퍼와 네트워크 대역폭의 고갈을 방지한다.

By JHL

우리가 알던 고전적 소프트웨어 엔지니어링은 죽었다

Product Engineering 시대와 AI 개발 패러다임 변화 1. 패러다임 변화: 코드 작성의 목적이 달라졌다 1972년 Dennis Ritchie가 C 언어를 발표한 이후, 소프트웨어 산업은 오랫동안 다음 요소에 집중해 왔다. * 코드 효율성 (시간·공간 복잡도) * 코드 길이 및 생산성 * 가독성과 유지보수성 그러나 AI 시대가 시작되면서 기존 패러다임이 근본적으로 변하고 있음. John Carmack은

By JHL

GitLab에서 제작한 GitOps 초보자 가이드

소개 소프트웨어 애플리케이션의 복잡도가 증가함에 따라 인프라에 대한 요구도도 함께 증가하고 있습니다. 인프라 팀은 다양한 서비스를 빠르고 안정적으로 제공해야 하지만, 인프라 구축은 여전히 수동 프로세스에 의존하는 경우가 많습니다. 이 문제를 해결하기 위한 핵심 접근 방식이 인프라 자동화이며, 그중 하나가 GitOps입니다. 1. 인프라 자동화의 필요성 * 애플리케이션 개발은 CI/CD로 자동화되었지만 인프라

By JHL