Language/Python

[Python] 가상 환경에 대한 이해: pyenv, virtualenv, anaconda

ooeunz 2019. 11. 11. 17:17
반응형

 

파이썬은 다양한 편리한 패키지들을 지원한다. 특히 Data Science와 관련된 수많은 모듈들을 지원하는데, 이것들은 파이썬이 지금 세계에서 가장 인기 있는 언어 중 하나로 자리매김을 하는데에 큰 역할을 하였다. 하지만 대부분의 개발환경이 그렇듯, 파이썬에서도 사소한 모듈들의 버전 차이로 인해 에러가 발생하는 경우가 있다. 때문에 각 패키지들 간의 버전 간의 호환성을 유지하는 것은 매우 중요한 일이다.

 

하지만 매번 프로젝트를 진행할 때마다 root에 설치되어있는 다양한 파이썬 패키지들 버전을 새로 설치하고 변경한다면 매우 비효율적인 일이 될 것이다. 그래서 사용하게 되는 것이 바로 가상 환경이다.

 

가상 환경은 말 그대로 가상의 파이썬 공간이다. 즉, 분리되어진 가상의 공간에 프로젝트마다 필요한 파이썬 모듈들을 설치할 수 있다. 예를 들어 내가 tensorflow를 사용하여 머신러닝 프로젝트를 진행하려 하는데, A라는 프로젝트에서는 1.0.0 버전이, B라는 프로젝트에서는 1.2.0 버전이 필요하다면, 우리는 두 개의 파이썬 가상 환경을 만들어서 각각 다르게 필요한 라이브러리들을 설치할 수 있다.

 

이러한 파이썬 가상 환경 툴에는 여러가지가 있는데, 그중 가장 대표적인 것들을 살펴보도록 하겠다.

 

 


pyenv

※ window는 지원하지 않는다. (해당 포스팅은 Mac os 기준으로 설명하겠다.)

 

먼저 필자가 현재 사용하고 있는 파이썬 버전 관리 시스템이다. 때때로 레거시 프로젝트를 진행할 때면 구 버전의 파이썬을 이용해야 할 경우가 생긴다. 이럴 경우 pyenv는 파이썬의 버전을 자유롭게 변경할 수 있도록 도와준다. 마치 리볼버 권총에 파이썬 버전들을 여러 가지 장전해두고 필요에 따라 원하는 탄을 발사할 수 있도록 하는 것과 유사하다. (이해에 도움이 되는 예시인진 모르겠다..:D)

 

먼저 pyenv를 설치하기 위해서는 Home brew를 사용해야한다. 만약 home brew를 설치하지 않았다면 아래의 url에 접속해서 가이드를 따라 설치하도록 하자.

https://brew.sh/index_ko

 

Homebrew

The missing package manager for macOS (or Linux).

brew.sh

 

homebrew가 있다면 pyenv를 간편하게 설치할 수 있다. 아래의 코드는 homebrew를 최신 버전으로 업데이트하고, pyenv를 설치하는 코드이다.

brew update
brew install pyenv

 

 

설치 가능한 python 목록 확인하기

pyenv install —list

 

 

파이썬 설치

pyenv install <파이썬 버전>

간혹, 안될 경우는 아래의 코드로 설치하도록 하자.

CFLAGS="-I$(brew --prefix readline)/include -I$(brew --prefix openssl)/include -I$(xcrun --show-sdk-path)/usr/include" \
LDFLAGS="-L$(brew --prefix readline)/lib -L$(brew --prefix openssl)/lib" \
PYTHON_CONFIGURE_OPTS=--enable-unicode=ucs2 \
pyenv install -v 3.7.1

 

 

설치한 파이썬 목록

pyenv versions

 

 

특정 버전 삭제

pyenv uninstall <버전 이름>

 

 

파이썬 글로벌 설정(local에서 기본적으로 사용할 버전을 설정)

pyenv global <파이썬 버전>

 

 


pyenv-virtualenv

pyenv가 단순히 파이썬 버전을 다양하게 사용할 수 있다면 virtualenv가 바로 이 포스팅에서 소개하려 했던 가상 환경이다. pyenv의 목록에 virtualenv가 들어가기 때문에 pyenv를 먼저 설치해주었다. 그럼 본격적으로 virtualenv를 설치해보도록 하겠다.

 

※ virtualenv는 프로젝트별로 패키지들의 충돌을 막아주기 위한 가상환경이다.

 

역시나 brew를 통해 간단하게 install 한다.

brew install pyenv-virtualenv

 

 

가상 환경 생성

pyenv virtualenv <version> <가상환경 이름>
pyenv virtualenv <가상환경 이름>

이제 pyenv list에 virtualenv로 만든 가상 환경이 추가되었다. 해당 가상환경은 독립적인 공간으로써 프로젝트에 따라 필요한 패키지들을 서로 다르게 구성하여 편리하게 관리할 수 있다.

 

 

가상환경 삭제

pyenv uninstall <가상환경 이름>

 

 

가상환경 실행, 비활성화

source activate <가상환경 이름>	// 가상환경 실행
deactivate <가상환경 이름>	// 가상환경 비활성화

 

 


pip

더불어 혹시나 패키지를 설치하는 방법을 모르는 독자를 위해 코드를 남기자면 파이썬은 pip라는 package management system이 있다.

pip를 이용하면 손쉽게 파이썬 패키지들을 설치할 수 있다. 하지만 주의할 점이 있는데, pip와 pip3가 다르다는 점을 유의해야 한다.

 

pip: python 2.x version

pip3: python 3.x version

 

레거시 프로젝트를 진행해야 해서 python2 버전이 필요한 것이 아니라면 pip3를 이용해 패키지들을 설치하는 것이 좋다.

pip3 install <패키지 명>

 

 


Anaconda

 

anaconda는 window, mac, linux에서 사용 가능한 패키지 관리 툴이다.

 

https://www.anaconda.com/distribution/

 

Anaconda Python/R Distribution - Free Download

Anaconda Distribution is the world's most popular Python data science platform. Download the free version to access over 1500 data science packages and manage libraries and dependencies with Conda.

www.anaconda.com

위의 url에서 install 할 수 있으며 간략하게 명령어들을 살펴보도록 하겠다.

 

 

conda version 확인 및 version update

conda --version	// 버전 확인
conda update conda	// conda 업데이트

 

 

conda 가상 환경 생성 및 삭제

// 가상환경 생성
conda create --name(-n) <가상환경 명> <설치할 패키지들: 공백으로 구분>

// 예시
conda create --name emotion python=3.6


// 가상환경 삭제
conda remove --name <가상환경 명> --all	// root 계정으로 activate한 이후에 삭제할 것.

 

 

conda 가상환경 리스트

// 가상환경 리스트
conda info --env

// 실행
activate <가상환경 명>

// 비활성화
deactivate <가상환경 명>

 

 

conda 패키지 설치

conda install <패키지 명>
pip3 install <패키지 명>

conda는 특이하게 conda라는 명령어를 사용해서 python package들을 설치할 수 있다. 그리고 당연히 pip3를 이용해서도 패키지를 설치할 수 있다. 어느 것을 사용하더라도 무방하나, conda와 pip는 서로 다른 path에 패키지들이 설치되므로 한 가지 방법만을 이용해서 패키지들을 설치하도록 한다.

반응형