가상 환경(venv)

ding·2024년 12월 16일

가상환경은 백엔드 개발에서 매우 중요한 도구이다. 가상환경은 특정 프로젝트에 필요한 패키지와 의존성을 독립적으로 관리할 수 있는 방법을 제공한다.

가상환경이란?

가상환경은 특정 프로젝트에 필요한 패키지, 라이브러리, 의존성, 그리고 심지어 특정 Python 버전을 격리하여 관리할 수 있는 독립적인 환경이다. 각 가상환경은 고유의 디렉토리 구조를 가지고 있으며, 전역 설치된 의존성과 독립적으로 동작한다.

필요성

  1. 프로젝트 간 의존성 충돌 방지
  • 서로 다른 프로젝트에서 같은 라이브러리를 사용하는데, 각 프로젝트가 다른 버전의 라이브러리를 요구할 수 있다.
  • 가상환경은 각 프로젝트마다 독립적으로 라이브러리를 설치하기 때문에 충돌을 방지한다.
  • 예를 들어, 프로젝트 A는 Django 3.2를 사용하지만, 프로젝트 B는 Django 4.0을 사용해야 한다면 가상환경으로 격리하여 관리할 수 있다.
  1. 전역 Python 환경 오염 방지
  • 가상환경을 사용하지 않고 라이브러리를 전역적으로 설치하면, 다른 시스템에서 문제를 유발할 수 있다.
  • 전역 Python 환경은 시스템 전체의 안정성과 연관되므로, 이를 오염시키지 않는 것이 중요하다.
  1. 배포 환경과의 일관성 유지
  • 로컬 개발 환경과 배포 환경에서 동일한 의존성을 유지하려면 가상환경을 사용하는 것이 필수적이다.
  • requirements.txt 또는 poetry.lock 같은 파일을 활용해 의존성을 재현할 수 있다.

주요 기능

  1. 독립성 제공
  • 각 프로젝트는 자신만의 Python 환경을 가지며, 다른 프로젝트와 분리된다.
  1. 패키지 관리
  • 프로젝트에 필요한 라이브러리를 설치하고 제거할 수 있다.
  • 예) pip install로 패키지를 설치할 때, 가상환경 내에서만 적용된다.
  1. Python 버전 간리
  • 가상환경은 특정 Python 버전과 함께 생성될 수 있다.
  • 예) 프로젝트A는 Python 3.9, 프로젝트B는 Python 3.10을 사용할 수 있다.

사용법

venv : Python 표준 가상환경

python에는 내장된 가상환경 생성 도구 venv가 있다.

cd my_project #프로젝트 디렉토리로 이동
python3 -m venv myvenv #가상환경 생성

source myvenv/bin/activate #macOS 가상환경 활성화
myvenv\Scripts\activate #Windows 가상환경 활성화

deactivate #가상환경 비활성화

virtualenv : 가상환경 관리 도구

virtualenv는 Python 표준 라이브러리 이전부터 사용되던 가상환경 생성 도구이다.

pip install virtualenv #설치

virtualenv venv #가상환경 생성

source myvenv/bin/activate #macOS 가상환경 활성화
myvenv\Scripts\activate #Windows 가상환경 활성화

deactivate #가상환경 비활성화

pipenv : 고급 패키지 관리 도구

pipenv는 가상환경과 패키지 관리를 통합적으로 처리하는 도구이다.

pip install pipenv #설치

pipenv install requests #가상환경 생성 및 의존성 설치

pipenv shell #가상환경 활성화

exit #가상환경 비활성화

pyenv : Python버전 관리와 가상환경

pyenv는 Python 버전을 관리하고, 특정 버전을 기반으로 가상환경을 생성하는데 유용하다.

brew install pyenv #macOS 설치

pyenv install 3.10.6 #파이썬 버전 설치

#가상환경 생성 : pyenv와 virtualenv를 결합한 pyenv-virtualenv를 사용
pyenv virtualenv 3.10.6 my_project_env

pyenv activate my_project_env #가상환경 활성화

pyenv deactivate #가상환경 비활성화

가상환경을 활용한 의존성 관리

프로젝트의 의존성을 저장하여 다른 환경에서도 동일한 의존성을 설치할 수 있다.

의존성 저장
pip freeze > requirements.txt

의존성 설치
pip install -r requirements.txt

0개의 댓글