본문 바로가기
Language/Python

가상 환경 이란?

by 태윤2 2021. 3. 19.

Python Documentatation에 따르면

 

virtual environment (가상 환경)

파이썬 사용자와 응용 프로그램이, 같은 시스템에서 실행되는 다른 파이썬 응용 프로그램들의 동작에 영향을 주지 않으면서, 파이썬 배포 패키지들을 설치하거나 업그레이드하는 것을 가능하게 하는, 협력적으로 격리된 실행 환경.

 

가상 환경 및 패키지

 

파이썬 응용 프로그램은 종종 표준 라이브러리의 일부로 제공되지 않는 패키지와 모듈을 사용합니다. 응용 프로그램에 특정 버전의 라이브러리가 필요할 수 있는데, 응용 프로그램에 특정 버그가 수정된 버전이 필요하거나, 라이브러리 인터페이스의 구식 버전을 사용하여 응용 프로그램을 작성할 수도 있기 때문입니다.

 

즉, 하나의 파이썬 설치가 모든 응용 프로그램의 요구사항을 충족시키는 것이 불가능할 수도 있습니다. 응용 프로그램 A에 특정 모듈의 버전 1.0이 필요하지만, 응용 프로그램 B에 버전 2.0이 필요한 경우, 요구 사항이 충돌하고, 버전 1.0 또는 2.0을 설치하면 어느 한 응용 프로그램은 실행할 수 없게 됩니다.

 

이 문제에 대한 해결책은 가상 환경 을 만드는 것입니다. 이 가상 환경은 특정 버전 파이썬 설치와 여러 추가 패키지를 포함하는 완비된 티렉 터리 트리입니다.

 

서로 다른 응용 프로그램은 서로 다른 가상 환경을 사용할 수 있습니다. 앞서 본 상충하는 요구 사항의 예를 해결하기 위해, 응용프로그램 A에는 버전 1.0이 설치된 자체 가상 환경이 있고, 응용 프로그램 B에는 버전 2.0이 있는 다른 가상 환경이 있을 수 있습니다. 응용 프로그램 B에서 라이브러리를 버전 3.0으로 업그레이드해야 하는 경우, 응용 프로그램 A의 환경에 영향을 미치지 않습니다.

 

 

정리를 하자면 파이썬 패키지(라이브러리)들 간의 의존성 때문에 사용하는 것이다. 특정 패키지 버전을 업데이트 할 때 다른 것들이 호환되지 않아 문제가 생기는 경우가 빈번하게 발생한다. 그리고 작업환경이 바뀌거나 할 경우(PC 교체) 필요한 패키지들을 동일한 버전으로 설치해 작업할 수 있기 때문에 무조건 사용하는 게 좋다.

 

즉, 시스템의 환경과 각각의 프로젝트 환경을 격리하여 패키지/라이브러리간 version issue 또는 이외의 dependency issue를 차단하고, 프로젝트에서 사용하는 패키지/라이브러리를 관리하거나 정리하기 수월하게 도와준다.

 

가상 환경을 구축하기 위한 방법에 대한 방법에 대해 알아보자!

 

 

가상 환경을 구축하기 위한  라이브러리를 설치를 도와주는 pip에 대해 먼저 알아보자.

 

PIP

pip는 Python Package Index(PyPI) 저장소로부터 파이썬 패키지를 받아 설치하는 패키지 관리 도구입니다. PyPI는 third-party 파이썬 오픈소스 패키지들을 위한 저장소입니다.

 

 

 

 

대표적인 방법으로는 virtualenv, venv, anaconda, pyenv를 사용해 가상 환경을 구축할 수 있다.

 

  • venv : Python 3.3 버전 이후부터 기본 모듈에 포함됨
  • virtualenv : Python 2 버전부터 사용해오던 가상 환경 라이브러리, Python 3에서도 사용 가능
  • conda : Anaconda Python을 설치했을 시 사용할 수 있는 모듈
  • pyenv : pyenv의 경우 Python Version Manager임과 동시에 가상 환경 기능을 플러그인 형태로 제공

각각의 모듈의 사용법에 대해 알아보겠습니다.

 

virtualenv

 

pip 명령어로 모듈을 설치 하기

 

$ pip install virtualenv

 

 

virtualenv로 가상 환경을 생성합니다.

$ virtualenv 가상환경명

 

가상환경을 구동하기

$ source 가상환경명/bin/activate

가상 환경이 구동되면 터미널 창의 프롬프트가 아래와 같이 변경됩니다

(가상환경명) $

이렇게 가상 환경으로 변경된 상태에서 pip 명령어로 패키지를 Install 하면 별도의 격리된 공간에 라이브러리가 설치됩니다.

 

가상 환경을 빠져나오는 명령어

$ deactivate

 

 

conda

  • conda는 pyenv환경에서는 정삭적으로 가상 환경이 격리되지 않습니다. 아래 설명은 pyenv가 아닌 환경에서만 유효합니다.
  • conda는 사실 가상 환경만을 구성하는 모듈은 아닙니다.
  • anaconda python의 정보를 확인하고, pip와 마찬가지로 패키지 인스톨 기능이 있으며 그리고 가상 환경을 설치할 수 있는 기능이 있습니다.
  • create가 가상환경을 만드는 서브 명령어이며 -n이 이름을 명시하는 옵션입니다.
$ conda create -n 가상환경명
가상환경을 활성화 합니다
$ source activate 가상환경명
가상환경을 비활성화 합니다.
$ source deactivate

 

 

 

pyenv

  • pyenv는 파이썬 버전 관리 툴이면서 동시에 가상 환경을 플러그인 형태로 제공합니다.
  • 파이썬 인터프리터명은 pyenv versions에 나오는 설치되어있는 파이썬 인터프리터 명칭을 입력합니다.
$ pyenv virtualenv 파이썬인터프리터명 가상환경명

  • 가상 환경을 활성화합니다.
$ pyenv activate 가상환경명

 

  • 가상 환경을 비 활성화합니다.
$ pyenv deactivate

 

 

venv

파이썬 2에서는virtualenv라이브러리를 사용하고 했다. 하지만 파이썬 3에서는3에서는 venv라는 가상 환경 라이브러리가 기본적으로 제공되기 때문에 굳이 virtualenv를 쓰지 않아도 된다.

 

$ python -m venv 가상 환경 명

 

추가 팁 : 애초에 가상 환경을 만들 때 시스템 기본 파이썬을 사용하면서 설치했던 전역 패키지들을 깔고 시작하는 방법도 있다. 명령어 칠 때 뒤에 --system-site-packages라고 붙여주면 된다.

 

$ python -m venv 가상환경 명 --system-site-packages

 

프로젝트 폴더 안에서 source 가상환경이름/bin/activate. 가상 환경 이름/bin/activate.라고 쳐주면 가상 환경이 활성화된다.

'Language > Python' 카테고리의 다른 글

pythonanywhere를 이용해 배포하기  (0) 2021.06.18
Python3  (0) 2020.08.15
Python2  (0) 2020.08.15
Python  (0) 2020.08.15