ref. https://homubee.tistory.com/38
파이썬 가상환경 venv
프로젝트를 진행하다 보면 여러 모듈을 설치하게 되는데요, 각 모듈은 서로 의존성(dependency)을 가지는 경우가 많기 때문에 글로벌하게 모듈을 설치하게 되면 여러 프로젝트를 관리하기 어렵습니다.
예를 들어 프로젝트1에서는 A, B, 프로젝트2에서는 A, C라는 모듈을 사용하는 상황을 생각해봅시다. 여기에서 B는 A가 1.x 버전이고, C는 A가 2.x 버전이어야 사용 가능하다고 해봅시다. 모듈을 글로벌 환경에 설치한다면 A는 1.x 또는 2.x 둘 중 하나만 설치할 수 있으므로 두 프로젝트를 모두 관리할 수 없습니다.
따라서, 각각의 프로젝트에 필요한 모듈을 별도의 로컬 환경에 설치하여 사용하게 되는데, 이를 가상환경이라고 합니다.
아마 node.js의 npm 모듈을 사용해보신 분들은 이러한 구조에 익숙하실 것 같은데요, 파이썬 가상환경도 같은 원리입니다.
파이썬은 일반적으로 pip를 이용하여 모듈을 설치하는데요, 이는 npm과 유사하지만, 중요한 차이점이 있습니다. npm은 자동으로 로컬 환경에 모듈을 설치하지만, pip는 글로벌 환경에 설치한다는 점입니다. 이 때문에, 별도로 가상환경이라는 개념을 적용하게 된 것입니다.
초창기 파이썬에서는 가상환경을 공식적으로 지원해주지 않다 보니(현재에는 지원하고 있습니다.) 여러 가지 표준/비표준 라이브러리가 사용되고 있습니다. 따라서, 가상환경의 종류에 대해 간단히 소개해 드리고, 그중 가장 대표적인 venv의 사용법에 관해 설명해 드리도록 하겠습니다.
파이썬 가상환경 종류
파이썬 표준 라이브러리에서 지원하는 가상환경이 있고 그렇지 않은 것이 있는데, 양쪽 모두 소개하도록 하겠습니다. 표준 라이브러리는 설치 없이 사용할 수 있지만, 비표준 라이브러리는 별도 설치가 필요합니다.
비표준 라이브러리
1. virtualenv
비표준 라이브러리 가운데, 가장 많이 사용하는 가상환경 라이브러리입니다. 표준 라이브러리는 아니지만 PyPA에서 공인된 라이브러리입니다. 아래에서 소개할 venv와 사용법이 유사하지만, Python 2, 3을 모두 지원한다는 장점 때문에 많이 사용합니다.
2. pyenv
파이썬 버전별로 환경 생성이 가능한 라이브러리입니다. 가상환경은 virtualenv 등을 통해 별도로 생성해주어야 합니다. 즉, 파이썬 버전 관리 기능을 제공해준다고 생각할 수 있습니다. Windows를 지원하지 않습니다.
3. pyenv-virtualenv
pyenv를 위한 플러그인입니다. pyenv와 virtualenv를 동시에 사용할 수 있도록 해줍니다.
4. virtualenvwrapper
virtualenv에 대한 익스텐션 모음입니다. virtualenv를 사용할 때 번거로웠던 부분들을 편하게 사용할 수 있도록 해줍니다.
5. pyenv-virtualenvwrapper
pyenv를 위한 플러그인입니다. pyenv와 virtualenvwrapper를 편하게 통합하여 사용할 수 있도록 해줍니다.
6. pipenv
Pipfile, pip, virtualenv를 하나의 커맨드로 실행할 수 있도록 하는 라이브러리입니다. pip 명령어 대신 pipenv 명령어로 모듈을 설치하면 루트 디렉토리에 가상환경이 생성됩니다. 실행할 때도 pipenv 명령어를 사용하여 가상환경에서 작업을 수행합니다.
표준 라이브러리
1. pyvenv
venv과 거의 유사한 가상환경 라이브러리입니다. Python 3.3에서 추가되었으나, Python 3.8에서 제거되었습니다. 아마도 pyenv와 이름이 유사하여 혼란을 피하고자 venv로 기능을 옮긴 후 삭제된 것이 아닌가 싶습니다.
2. venv
Python 3.3부터 사용가능한 가상환경 라이브러리입니다. 현재 기준으로 유일하게 표준 라이브러리에서 지원하는 가상환경 라이브러리입니다. 앞서 소개한 virtualenv의 경량화 모듈로 생각할 수 있으며, 실제로 두 라이브러리는 상당히 유사합니다. venv는 Python 2.x가 지원되지 않는 등, virtualenv보다 기능적으로는 조금 부족하지만, 별도 설치 없이 표준 라이브러리로 제공된다는 점에서 많이 사용합니다.
그 외에도 아나콘다를 통해 가상환경을 구축하는 등 여러 가지 방법이 있습니다. 일반적으로는 위에서 소개한 virtualenv이나 venv를 통해 원하는 작업을 수행하는 것이 가능하니, 추가로 필요한 내용은 직접 찾아보시면 좋겠습니다.
가상환경 종류에 관해서는 아래의 자료를 참고하였습니다. 더 자세한 내용이 궁금하시다면 영어 원문을 참고해주세요.
0 댓글