본문 바로가기
Programming Language/Python

virtualenv, pipenv 그리고 pyenv

by 알파해커 2020. 3. 3.
반응형

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 [파이썬 버전] 이라는 명령어를 통해 설치와 동시에 적용이 된다.

 

 

 

 

반응형

댓글