Python & Code Issue

[python] poetry 환경에서 pyproject.toml 파일을 requirements.txt 파일로 변환하기

cherie-ssom 2025. 6. 26. 10:07

모델을 배포할 때나, 공유해야할 때 requirements.txt 파일이 필요하다.

하지만, 내가 구성한 개발 환경은 poetry 환경이었지만, 외부에 개발한 모듈들을 공유하기 위해서 requirement.txt이 필요했기 때문에, 터미널에 한번에 requirements.txt 파일을 만드는 방법을 공유하고자 한다. 

1. poetry 가상 환경에서 pyproject.toml 이란?

pyproject.toml 파일은 프로젝트의 설정과 의존성 정보를 통합적으로 관리하는 핵심 구성 파일이다. 

이러한 toml 파일을 기반으로 poetry 가상 환경과 의존성, 메타데이터를 함께 관리할 수 있다.

따라서, 팀 프로젝트를 진행할 때 환경 관리 및 배포가 쉬워지는 장점이 있다.

 

toml 파일이 관리는 것의 예시는 다음과 같은 것들이 있다. 

프로젝트 정보 이름, 버전, 설명, 작성자 등
Python 버전 범위 python = "^3.9"
라이브러리 의존성 pandas = "^2.1.0", scikit-learn = "^1.4.0"
개발용 패키지 pytest, black, mypy 등
빌드 시스템 poetry-core 명시

 

poetry 환경에서 구성 항목에 대해 정리하자면 다음과 같이 정의할 수 있을 것 같다.

pyproject.toml 의존성, 프로젝트 설정, 빌드 설정 등을 정의 정의서
poetry 이 TOML 파일을 기반으로 가상환경을 만들고, 의존성 설치/잠금 등을 수행 실행자
.venv/ Poetry가 자동으로 만든 가상환경 폴더 (선택적으로 프로젝트 안/밖에 생성됨) 실행환경
poetry.lock 설치된 정확한 패키지 버전과 해시를 기록하여 재현성을 보장 잠금정보

 

이제 본격적으로 이 toml 파일을 기반으로 requirements.txt 파일을 손쉽게 뽑아내는 방법을 알아보자.

2. poetry 가상 환경에서 requirements.txt 파일 추출 방법

poetry 환경에서 requirements.txt 파일을 추출하려면 다음과 같은 코드를 터미널에 입력해주면 된다.

(다만, 해당 환경이 설정되어 있는 경로로 잘 지정을 해야한다(?). 즉, toml 파일이 존재하는 경로로 터미널 경로를 잘 맞춰줘야 한다.)

poetry self add poetry-plugin-export
poetry export -f requirements.txt --output requirements.txt --without-hashes

 

이렇게 하면 아주 간단하게 requirements.txt를 손쉽게 뽑아낼 수 있다.

 

감사합니다.