@senspond
>
파이썬 가상환경 관리, requirements.txt 버전관리 , Docker 환경 구성 등의 내용을 정리해 본 글입니다.
Python 3.3부터 별도의 설치없이 venv 라는 가상환경 표준 라이브러리가 제공됩니다. 아나콘다(anaconda) 로 가상환경 구성시 데이터과학에 필요한 기본 라이브러리들이 같이 설치가 되어 손쉽게 데이터과학을 위한 가상환경을 구성할 수 있지만, 가상환경이 조금 무겁다는 단점이 있습니다.
파이썬 공식(venv)
python -m venv <가상환경이름>
아나콘다(Anaconda)
conda create -n <가상환경명> python=<버전>
파이썬 공식(venv)
# macOS / Linux
source <가상환경이름>/bin/activate
# Windows
source <가상환경이름>\\Scripts\\activate
아나콘다(Anaconda)
conda activate <가상환경이름>
# 파이썬 공식
deactivate
# 아나콘다
conda deactivate
파이썬 공식(venv)
가상환경이 설치된 디렉토리를 찾아서 제거해주면 됩니다.
아나콘다(anaconda)
conda remove --name [가상환경이름] --all
가상환경에서 필요한 패키지를 설치, 관리하는 방법입니다.
파이썬 공식
# 패키지 설치
pip install <패키지이름>
# 패키지 목록 확인
pip list
# 패키지 업그레이드
pip install --upgrade <패키지이름>
# 패키지 삭제
pip uninstall <패키지이름>
Anaconda
# 패키지 설치
conda install <패키지이름>
# 패키지 목록 확인
conda list
# 패키지 업그레이드
conda update <패키지이름>
# 패키지 삭제
conda remove <패키지이름>
python 프로젝트의 의존성 정보가 담긴 텍스트 문서라고 할 수 있습니다.해당 프로젝트의 특정 파이썬 버전에서 정상적으로 동작되는 의존성 라이브러리 버전 들이 다를 수가 있기 때문에, 잘 관리해두어야 프로젝트 유지보수가 용이합니다.
# 파이썬 공식
pip freeze > requirements.txt
# 아나콘다
conda list -e > requirements.txt
간혹 아래 스샷처럼 @ file:/// 이런식으로 만들어 질 때가 있는데
이럴 때는 아래 커맨드를 입력하면 됩니다.
pip list --format=freeze > requirements.txt
# 파이썬 공식
pip install -r requirements.txt
# 아나콘다
conda install --file requirements.txt
설치가 되지않는 패키지는 건너뛰고, 설치가능한 패키지만 모두 설치하기(linux, centos)
cat requirements.txt | xargs -n 1 pip install
fastapi>=0.68.0,<0.69.0
pydantic>=1.8.0,<2.0.0
uvicorn>=0.15.0,<0.16.0
FROM python:3.10
WORKDIR /api
ENV TZ=Asia/Seoul
COPY ./requirements.txt /api/requirements.txt
RUN pip install --no-cache-dir --upgrade -r /api/requirements.txt
version: "3.7"
services:
fastapi:
image: fastapi
command: uvicorn app.main:app --host 0.0.0.0 --port 8080 --reload
env_file:
- .env
ports:
- 8080:8080
volumes:
- ./app:/code/app
백엔드가 fastAPI 서버가 되고 프론트엔드가 Streamlit이 되는 형태
backend/Dockerfile
FROM python:3.11
COPY requirements.txt app/requirements.txt
WORKDIR /app
ENV TZ=Asia/Seoul
RUN pip install -r requirements.txt
COPY . /app
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000" ,"--reload"]
frontend/Dockerfile
FROM python:3.11
COPY requirements.txt app/requirements.txt
WORKDIR /app
RUN pip install -r requirements.txt
COPY . /app
ENV TZ=Asia/Seoul
EXPOSE 8501
ENTRYPOINT ["streamlit","run"]
CMD ["streamlit_app.py"]
version: '3.8'
services:
frontend:
build: frontend
ports:
- 8501:8501
depends_on:
- backend
volumes:
- ./frontend:/app
restart: always
networks:
- app
container_name: frontend
backend:
build: backend
ports:
- 8000:8000
volumes:
- ./backend:/app
restart: always
networks:
- app
container_name: backend
networks:
app:
driver: bridge
안녕하세요. Red, Green, Blue 가 만나 새로운 세상을 만들어 나가겠다는 이상을 가진 개발자의 개인공간입니다.
현재글에서 작성자가 발행한 같은 카테고리내 이전, 다음 글들을 보여줍니다
@senspond
>