728x90
반응형
Streamlit 프로젝트를 관리할 때, requirements.txt 파일은 필수입니다. 이 파일은 프로젝트에 필요한 파이썬 패키지 목록과 버전 정보를 기록하여, 언제 어디서나 동일한 환경을 재현할 수 있게 도와줍니다. 이번 포스팅에서는 Streamlit 프로젝트를 위한 requirements.txt 파일을 생성하고 설치하는 방법을 단계별로 정리하겠습니다.
1. requirements.txt란?
- 의미: 프로젝트에 필요한 모든 파이썬 패키지와 버전을 나열한 텍스트 파일
- 목적:
- 다른 개발자나 서버에 동일한 환경을 쉽게 복제
- CI/CD, 배포 파이프라인에서 자동으로 의존성 설치
- 버전 충돌 방지 및 유지보수 용이
2. 가상환경 생성하기
먼저, 프로젝트 전용 가상환경(venv 또는 conda)을 생성하고 활성화합니다. 예시에서는 venv를 사용합니다.
# 프로젝트 폴더로 이동
$ cd my_streamlit_app
# 가상환경 생성 (venv 사용)
$ python3 -m venv .venv
# 활성화 (macOS/Linux)
$ source .venv/bin/activate
# 활성화 (Windows PowerShell)
> .venv\\Scripts\\Activate.ps1
가상환경이 활성화되면 프롬프트에 (.venv)가 붙습니다.
3. requirements.txt 파일 자동 생성
이미 가상환경에 필요한 패키지들을 설치했다면, pip freeze 명령어로 현재 환경의 패키지 목록을 추출할 수 있습니다.
# 예: Streamlit과 기타 패키지 설치
(.venv) $ pip install streamlit pandas matplotlib
# 현재 환경의 모든 패키지를 requirements.txt로 저장
(.venv) $ pip freeze > requirements.txt
이제 프로젝트 루트에 requirements.txt 파일이 생성됩니다. 열어보면 다음과 같은 형태입니다:
altair==4.2.0
matplotlib==3.7.1
pandas==2.1.1
streamlit==1.25.0
...
4. requirements.txt 파일 수동 작성
간혹 불필요한 패키지를 제외하고 필수 패키지만 직접 관리하고 싶을 때는, 간단히 텍스트 에디터로 파일을 작성할 수 있습니다.
# requirements.txt 예시
streamlit==1.25.0
pandas>=2.0.0
matplotlib
- 버전을 고정하려면 ==
- 최소 버전만 지정하려면 >=
- 버전 미지정 시 최신 버전 설치
5. requirements.txt로 패키지 설치하기
다른 환경(동료의 컴퓨터, 서버, CI 등)에서 동일한 의존성을 설치하려면 다음 명령어를 사용합니다.
# 가상환경 활성화 후
(.venv) $ pip install -r requirements.txt
- r 옵션으로 파일 안의 패키지를 순차 설치
- 설치 로그를 확인하며 버전 충돌 여부 점검
6. 팁 & 주의사항
- 가상환경 활용: 프로젝트별로 독립된 가상환경을 사용해야 패키지 충돌을 방지할 수 있습니다.
- 버전 고정: 프로덕션 환경에서는 주요 패키지 버전을 ==로 고정하는 것이 안전합니다.
- 불필요 패키지 정리: pip-autoremove 등을 이용해 사용하지 않는 패키지를 제거하고, pip freeze를 다시 생성하세요.
- 요구사항 분리: 개발용 요구사항(requirements-dev.txt)과 프로덕션 요구사항(requirements.txt)을 분리 관리하면 CI 환경 구성 시 유리합니다.
7. 마무리
이번 포스팅에서는 Streamlit 프로젝트를 위한 requirements.txt 파일의 생성 및 설치 방법을 실습해보았습니다.
정확한 의존성 관리는 협업과 배포의 신뢰성을 높여주며, 유지보수도 한층 수월해집니다.
Streamlit으로 멋진 대시보드나 웹앱을 만들 때, 꼭 가상환경과 요구사항 파일을 함께 관리해 보세요!
다음 글 예고
- Docker로 Streamlit 앱 컨테이너화하기
- Github Actions로 자동 배포 파이프라인 만들기
728x90
반응형
'Streamlit > 이론' 카테고리의 다른 글
161. [AI] [Fine-Tuning] : Object Detection을 활용한 도로 이미지 분석 (1) | 2025.02.28 |
---|---|
155. [Streamlit] [Anaconda] : Streamlit 설치시 필수 및 추천 라이브러리 (1) | 2025.02.19 |
147. [Python] [Streamlit] : Streamlit에서 한글 폰트 설정하기 (Mac, Windows, Linux) (0) | 2025.02.04 |
145. [Python] [Streamlit] : Streamlit(스트림릿) 차트 그리기(2) (0) | 2025.02.04 |
144. [Python] [Streamlit] : Streamlit(스트림릿) 차트 그리기(1) (0) | 2025.02.04 |