본문 바로가기

IT/기타

Python의 Venv(Virtual Environment, 가상 환경)

반응형

1. 프로젝트별 의존성 격리

  • Python 프로젝트마다 필요한 패키지 버전이 다를 수 있습니다.
  • venv를 사용하면 각 프로젝트별로 독립적인 환경을 만들어 충돌 없이 사용할 수 있습니다.
  • 예를 들어, 프로젝트 A에서는 Django 3.2, 프로젝트 B에서는 Django 4.0이 필요할 경우 각각의 venv에서 다른 버전을 설치하여 사용 가능합니다.

2. 전역 패키지 오염 방지

  • pip를 사용하여 패키지를 설치할 때, 기본적으로 글로벌 환경(시스템 전체)에 설치됩니다.
  • 여러 프로젝트에서 공통 패키지를 사용하면, 다른 프로젝트에서 특정 버전의 패키지를 필요로 할 때 충돌이 발생할 수 있습니다.
  • venv를 사용하면 프로젝트 내부에만 패키지가 설치되므로, 전역 환경을 오염시키지 않습니다.

3. 배포 및 재현성 유지

  • 프로젝트 개발이 완료된 후, 동일한 환경을 배포 서버에서도 만들어야 합니다.
  • venv를 사용하면 requirements.txt(또는 pip freeze > requirements.txt)로 설치된 패키지 목록을 저장하고, 배포 시 동일한 환경을 재현할 수 있습니다.

4. Python 버전 관리와 호환성 유지

  • 특정 프로젝트는 Python 3.8에서 실행되어야 하고, 다른 프로젝트는 Python 3.10이 필요할 수 있습니다.
  • venv를 사용하면 프로젝트마다 다른 Python 버전을 설정하여 실행할 수 있습니다. (pyenv와 함께 사용하면 더욱 효과적)

5. 보안 강화

  • 전역 환경에서 불필요한 패키지를 설치하는 것은 보안 취약점을 초래할 수 있습니다.
  • venv는 필요한 패키지만 설치하도록 관리하여 보안성을 높이는 데 도움을 줍니다.

반응형

가상 환경 사용 방법

1. 가상 환경 생성

python -m venv myenv

2. 가상 환경 활성화

  • Linux/macOS
source myenv/bin/activate

2. 가상 환경  비활성화

deactivate

 

반응형