virutualenv와 pipenv는, 둘 다 파이썬 패키지 관리 툴로써, 사실상 기능이 거의 동일하다. (심지어, pipenv는 내부적으로 virtualenv를 사용한다.) 다만, pipenv가 virtualenv보다 조금 더 편리한 기능을 제공한다고 보면 된다.
가상환경을 만들고, 그 가상환경을 활성화(activate)시키는 과정이 virtualenv에 비해, pipenv가 더 간결하다. 그리고, pipenv에서는, 파이썬의 requirements.txt와 같이, 적용한 패키지들을 쉽게 재적용할 수 있도록 만들어주는 문서파일(Pipfile)이 자동으로 만들어져서, 별도로 내가 만드는 노력이 없어도 된다.
virtualenv
virtualenv를 설치한다.
$ pip3 install virtualenv
virtualenv에 파이썬 버전을 지정한다.
$ virtualenv venv --python=python3.7
가상환경 생성. 일반적으로는 작업하고자 하는 프로젝트 디렉토리 내에서 생성하지만, 꼭 그 안에서 생성시킬 필요는 없다.
$ virtualenv venv
가상환경을 활성화(activate)한다.
$ source venv/bin/activate
가상환경을 활성화하게 되면, 가상환경 이름(이번 예에서는 venv)이 앞에 들어가는 것을 볼 수 있다. 그러나 이건 bash 쉘 기준이고, 다른 shell에서는 어떻게 나오는지 모르겠다. 그리고 pip list를 통해 설치된 패키지 리스트를 확인할 수 있다. 만약에 프로젝트에 필요한 패키지를 설치하려면, 원래 파이썬 패키지를 설치할 때와 동일하게 pip install [패키지명]으로 설치하면 된다. 그러면 설치된 패키지가 앞서 생성한 가상환경(venv)내에 설치된다.
(venv) $ pip list
pipenv
pipenv를 설치한다. 이 때, pip3로 pipenv를 설치하면 디폴트로 파이썬3와 연결된다.
$ pip3 install pipenv
만약에 현재 로컬에 파이썬2가 적용되어 있는데, 파이썬3(3.7)으로 변경하고 싶으면 아래와 같이 입력한다.
이미 적용되어 있다면, 당연히 생략 가능하다.
$ pipenv --python 3.7
가상환경을 활성화시킨다.
$ pipenv shell
필요한 패키지의 설치는 아래와 같이 pipenv install [패키지명]을 통해 수행할 수 있다.
$ pipenv install [패키지명]
(참고로 가상환경의 파이썬 위치는: pipenv --py 로 알수있다)
pyenv
pyenv의 역할은 하나의 OS에 여러 파이썬 버전이 필요할 때, 필요에 따라 local에 적용되는 파이썬 버전을 변경시켜주는 것이다. 그리고, 위에 작성했던 것처럼, virtualenv나 pipenv에도 파이썬 버전을 설정할 수 있다.
그런데, 보통 virtualenv나 pipenv는 pyenv와 함께 쓰인다. 왜일까?
이유는, virtualenv나 pipenv의 경우, 원하는 파이썬 버전이 이미 로컬에 설치되어 있는 경우에만, 위와 같은 명령어로 적용할 수 있기 때문이다. 만약 로컬에 3.7 버전이 설치되어 있는데, virtualenv나 pipenv 명령어를 이용해서 3.8 버전을 적용하고 싶으면 에러 메세지가 나온다.
그러나 pyenv는 만약에 원하는 버전의 파이썬이 로컬에 저장되어 있지 않더라도, pyenv install [파이썬 버전] 이라는 명령어를 통해 설치와 동시에 적용이 된다.
'Programming Language > Python' 카테고리의 다른 글
[파이썬/Python] List 형태의 String을 List로. List 형태의 Dict를 Dict로. (1) | 2020.05.21 |
---|---|
파이썬 메타클래스 쉽고 깊게 이해하기, Python Metaclass A to Z (3) | 2020.03.16 |
파이썬 문자열 조작하기 (0) | 2020.03.09 |
파이썬, 파일 읽고 쓰기 (0) | 2020.03.02 |
파이썬 버전 관리: pyenv, virtualenv, autoenv (0) | 2020.02.27 |