패키지 및 버전 관리

Sawol·2021년 5월 2일
0

I Need Python

목록 보기
4/13
post-thumbnail

프로젝트를 진행하다보면 필요한 파이썬 버전이 상이할 때가 있다. 어떤 모듈을 쓰기 위해서는 파이썬 2버전이 필요하고, 또 다른 모듈은 파이썬 3버전이 필요한 이런 상황이 있다. 그러나 PC에는 파이썬을 설치하면 이전 버전의 파이썬은 자동으로 지워지고 새로운 버전을 설치한다. PC 내에는 여러 버전의 파이썬을 설치할 수는 없을까?
이 같은 고민을 하는 사람들을 위해 파이썬은 virtual environment(가상 환경)을 지원하다. 하나의 디렉토리를 격리된 가상환경으로 구현하는 것이다. 즉, 프로젝트별로 환경을 구성할 수 있다.
파이썬에서 venv 모듈은 가상 환경을 만들고 관리하는데 사용된다. venv는 파이썬3에서 지원하는 모듈로 만약 파이썬2를 사용중이라면, virtualenv를 사용하면 된다.virtualenv는 내장 모듈인 venv과 다르게 pip으로 따로 설치를 해줘야한다.

venv

가상 환경 만들기(venv)

python<사용할 파이썬 버전> -m venv <가상 환경 경로 & 가상 환경 이름>

venv 모듈을 사용해서 새로운 가상 환경을 생성하는 명령어이다. 만약 파이썬 2를 사용하고 싶으면 파이썬 2를 설치한 뒤 python2 -m venv .venv를 하면 된다.가상 환경 이름만 적을 경우 위 명령어를 실행한 폴더에 가상 환경이 생긴다. 이를 원치 않는 경우 미리 경로로 이동하여 위 명령어를 수행하던가, 가상 환경 이름 앞에 경로를 같이 기입하면 된다. 파이썬 공식 문서에는 가상 환경의 이름을 .venv로 설정하는 것을 추천한다. 물론 다른 이름을 써도 무관하다.
그럼 해당 경로에 가상 환경 이름으로 된 폴더가 생기고, 그 안에 파이썬 인터프리터, 표준 라이브러리 등 다양한 파일이 생긴다.

가상 환경 들어가기(venv)

windows
<가상 환경 이름>\Scripts\activate.bat
MacOS or Unix
source <가상 환경 이름>/bin/activate

위 명령어를 수행하면 가상 환경에 들어간다. 참고로 이 스크립트는 bash 쉘 용으로 작성되어, csh 또는 fish 쉘을 사용하는 경우 activate.csh, activate.fish를 사용하면 된다.

가상 환경에 들어가면 위 사진처럼 명령 프롬프트가 바뀌는 것을 볼 수 있다. 또한 자동으로 파이썬을 설치하기 때문에 바로 파이썬을 사용할 수 있다.

가상 환경에 패키지 설치(venv)

python -m pip install requests
python -m pip install requests==2.6.0
python -m pip install --upgrade requests

원하는 모듈을 설치하거나 업데이트가 가능하고 특정 버전으로 설치도 가능하다.

venv 특징

venv의 가장 큰 장점은 파이썬 내장 모듈이라는 점이다. 따로 무언가를 설치할 필요 없이 바로 가상 환경을 만들 수 있다. 다만, 패키지의 버전이 아닌 파이썬의 버전을 상이하게 하려면 해당 파이썬 버전을 따로 다운받아 설치를 해야하는 과정이 필요하다. venv는 현재 시스템에 설치되어있는 파이썬 버전으로 가상 환경을 만들어 주기 때문이다.
패키지 버전만 다르게 환경을 구성하고 싶다면, venv도 좋은 방법이나, 파이썬 버전까지 다르게 구성하고 싶다면 아래에서 설명하는 conda를 추천한다.

Conda

원래 아나콘다라는 python, R 언어로 데이터 사이언스 분야의 패키지들의 모음을 제공하는 데이터 과학 툴킷에 패키지 및 환경 관리를 해주는 시스템이다. 그래서 원래는 python의 패키지 관리 문제를 해결하기 위해 만들어졌지만, 현재는 파이썬뿐만 아니라 R, Ruby, Lua, Scala, Java, JavaScript, C / C ++등 다양한 언어를 지원한다.
어쨌든 여기서 아나콘다를 설치해야 conda를 사용할 수 있다. 또한 콘다를 사용하는 방법에 대해 문서화도 잘 되어있다.

가상 환경 만들기(Conda)

conda activate
conda deactivate

conda activateconda 환경을 활성화 하는 것이다. 반대로, deactivate는 비활성화 시키는 것이다. 이는 아나콘다를 설치하면 기본적으로 만들어지는 환경(base)으로 이 위에 우리가 프로젝트를 하며 생성할 가상 환경을 만드는 것이다.

conda info --envs

위 명령어를 사용하면 현재 생성된 가상 환경을 출력해 준다. 현재는 아나콘다가 설치되면 기본으로 설치된 base외에는 가상 환경이 존재하지 않는다. * 표시가 되어있는 환경이 현재 active 되어있는 환경이다.

conda create -n <가상 환경 이름> python=<파이썬 버전>
conda create -n myenv scipy

만약 파이썬 3.6버전으로 myenv라는 가상 환경을 구성하려면 conda create -n myenv python=3.6 을 입력하면 된다. 여기서 앞서 살펴봤던 venv보다 편리한 점이 들어난다. 바로 따로 파이썬 패키지를 설치하지 않아도 콘다에서 자동으로 가상 환경에 설치를 해준다!

가상 환경 들어가기(Conda)

conda acivate <가상 환경 이름>
conda deactivate

base 환경에 들어간 것처럼 conda acivate <가상 환경 이름>을 사용하면 가상 환경에 들어갈 수 있다. 반대로 나가기 위해서는 따로 가상 환경의 이름을 설정 하지 않아도 base 환경으로 나가게 된다.
base 환경은 현재 시스템에 설치된 python 3.8 버전이지만, 가상 환경인 myenv에는 python 3.6이 설치된 것을 볼 수 있다.

가상 환경에 패키지 설치(Conda)

conda로 설치

conda install scipy
conda install scipy=0.15.0
conda install scipy curl	# 여러 패키지를 한번에 설치
conda install scipy=0.15.0 curl=7.26.0	# 여러 패키지의 버전을 설정해 한번에 설치

pip 으로 설치

pip install requests
pip install requests==2.6.0
pip install --upgrade requests

condapip 둘 다 사용할 수 있지만, conda로 설치할 수 있는 패키지를 모두 설치한 뒤, pip을 이용해 남은 패키지를 설치하기를 권장하고 있다.

Conda 특징

아나콘다를 설치해야한다는 것이 가장 큰 단점이다. 데이터 사이언스 관련된 패키지를 사용할 일이없다면 굳이...? 용량도 상당하다. 배보다 배꼽이 큰 느낌...?
다만, 어떤 OS에서든 패키지 관리를 할 수 있고, pip이나 venv의 경우 파이썬 한정이지만, conda의 경우는 앞서 봤듯 많은 언어를 지원한다.

그 외...

pip VS poetry
pipenv

0개의 댓글