Post

v(virtual)env

Python에서 프로젝트별로 독립된 개발 환경을 관리하는 데 널리 사용되는 두 가지 주요 도구는 virtualenv와 venv가 있다.

  • 사용 이유
    • 의존성 충돌 방지: 각 프로젝트는 독립된 가상 환경에서 실행되므로, 프로젝트별로 서로 다른 라이브러리 버전을 사용할 수 있다. 이는 한 프로젝트에서 업데이트된 라이브러리가 다른 프로젝트와 충돌하는 문제를 방지한다.
    • 개발 및 배포의 일관성: 개발, 테스트, 프로덕션 환경 간에 동일한 의존성을 유지할 수 있다.
    • 쉬운 의존성 관리: pip와 결합하여 사용되며, requirements.txt 파일을 통해 프로젝트 의존성을 쉽게 관리하고, 필요한 패키지를 일관되게 설치할 수 있다.
    • 쉬운 배포 준비: 가상 환경은 프로젝트를 배포할 때 필요한 모든 의존성을 포함하므로, 환경 구성을 쉽게 복제하고, 다른 시스템이나 서버에 프로젝트를 쉽게 이전할 수 있다.

python-virtualenv

virtualenv

virtualenv는 Python의 가상 환경을 생성, 관리하기 위한 도구로, Python 2 버전대부터 사용됐으며 Python 3에서도 계속 사용된다. virtualenv를 사용하면, 각기 다른 프로젝트에 대해 서로 다른 라이브러리 버전을 가질 수 있는 독립된 환경을 만들 수 있다.

주요 특징

  • Python 2와 Python 3 모두를 지원한다.
  • 시스템의 전역 Python 설치에 영향을 주지 않으면서, 다양한 버전의 Python과 패키지를 프로젝트별로 관리할 수 있다.
  • 다양한 외부 도구와 통합이 가능하며, 추가적인 기능을 제공하는 플러그인 시스템을 갖추고 있다.
  • pip와 함께 사용하여 패키지를 관리한다.

사용 방법

  • 설치: pip install virtualenv
  • 가상 환경 생성: virtualenv ${env_name}
  • 가상 환경 설정(macOS/Linux)
    • 활성화: source ${env_name}/bin/activate
    • 비활성화: deactivate

venv

venv는 Python 3.3 버전 이상에서 기본적으로 제공되는 모듈로, virtualenv와 유사한 기능을 제공한다. venv는 Python 3의 일부로 표준화되어, 가상 환경을 쉽게 생성하고 관리할 수 있다.

주요 특징

  • Python 3.3 이상에서 기본적으로 포함되어 있어 별도의 설치가 필요 없다.
  • 프로젝트별로 격리된 Python 환경을 제공하여 의존성 관리를 용이하게 한다.
  • virtualenv보다 가볍고, Python 3 환경에 더 밀접하게 통합된다.

사용 방법

  • 가상 환경 생성: python -m venv ${env_name}
  • 가상 환경 활성화(macOS/Linux)
    • 활성화: source ${env_name}/bin/activate
    • 비활성화: deactivate

virtualenv vs venv

  • 버전 지원: virtualenv는 Python 2와 Python 3 모두를 지원하는 반면, venv는 Python 3.3 이상에서만 사용할 수 있다.
  • 설치: venv는 Python 3.3 이상에서는 별도의 설치 없이 사용할 수 있지만, virtualenv는 pip를 통해 설치해야 한다.
  • 기능성: virtualenv는 venv에 비해 많은 기능과 플러그인을 제공하지만, 대부분의 사용 사례에서 venv가 충분하다. 😉

venv와 pyenv 함께 활용하기 ❗️

pyenv는 여러 버전의 Python을 설치하고 관리할 수 있게 해주는 도구이다. 개발자가 시스템의 기본 Python 설치를 변경하지 않고도, 여러 버전의 Python을 쉽게 전환하며 사용할 수 있도록 해준다. 각 프로젝트별로 필요한 Python 버전을 지정할 수 있게 해주며, 전역적으로 사용할 Python 버전을 설정하는 기능도 제공한다.

pyenv와 venv를 함께 사용하는 것은 Python 개발 환경을 최적화하는 데 중요하다. pyenv를 사용해 시스템에 여러 버전의 Python을 설치하고 관리할 수 있으며, 각 프로젝트에서 venv를 사용하여 해당 Python 버전에 맞는 독립된 가상 환경을 생성할 수 있다.

활용 방안

  • Python 버전 설치: 먼저, pyenv를 사용하여 프로젝트에서 사용할 Python 버전을 설치한다.
    • 예시: pyenv install 3.8.6
  • 로컬 Python 버전 설정: 프로젝트 디렉토리에서 pyenv local 3.8.6 명령어를 실행하여, 해당 디렉토리에 Python 3.8.6 버전을 사용하도록 설정한다.
  • 가상 환경 생성: venv를 사용하여 새로운 가상 환경을 생성합니다. 이미 pyenv를 통해 설정된 Python 버전을 사용하므로, python -m venv ${env_name} 명령어를 실행하기만 하면 된다.
  • 가상 환경 활성화: 가상 환경을 활성화하기 위해, 생성된 가상 환경 디렉토리 내의 스크립트를 실행한다.
    • 예시: source env/bin/activate (Linux/macOS)
  • 필요한 패키지 설치: 가상 환경이 활성화된 상태에서 pip를 사용해 필요한 패키지를 설치한다. 이 패키지들은 현재 활성화된 가상 환경 내에만 설치된다.
  • 개발 시작: 이제 설정된 Python 버전과 가상 환경 내에서 개발을 시작하면 된다. 개발이 끝난 후에는 deactivate 명령어로 가상 환경을 비활성화할 수 있다.
This post is licensed under CC BY 4.0 by the author.