Anaconda를 활용한 python 가상환경(virtual env) 설정하기
Sep 14, 2018

이번 포스팅에서는 Python을 활용하여 개발 / 혹은 jupyter notebook을 사용할 때 필수인 가상환경 (Virtual Environment) 설정하는 법에 대한 팁과 간단한 강좌를 공유해 드리도록 하겠습니다.

가상환경(Virtual Environment)은 앞서 말씀드린대로 python을 개발할 때 필수라고 할 수 있습니다. 저도 Android 개발만 할 때는 가상환경에 다소 생소했습니다. 하지만, python을 다루게 되면서 가상환경이 왜 필요한지에 대해 깨닫게 되었습니다.

가상환경(Virtual Environment)이란?

가상환경은 말 그대로 가상의 개발 환경을 만들어 주는 것입니다. 들어 보셨을지는 모르겠지만, 가상머신(Virtual Machine)을 이용해 os를 가상으로 올려서 윈도우 환경이나 리눅스 환경을 만들어 개발을 하는 경우가 있습니다. 이와 마찬가지로, python 을 개발할 때는 다양한 packageimport해서 사용하는 경우가 많습니다. 아래 예제를 본다면,

import tensorflow as tf
device_name = tf.test.gpu_device_name()
if device_name != '/device:GPU:0':
  raise SystemError('GPU device not found')
print('Found GPU at: {}'.format(device_name))

# Found GPU at: /device:GPU:0

tensorflow라는 패키지(package)를 import해서 사용하고 있습니다.

그럼 왜 그냥 설치해서 사용하면 되지, 굳이 가상환경을 만들어서 새로 패키지 설치를 하는 번거로움이 있으면서도 가상환경에서 개발 할까요?

다양한 이유가 있겠지만, 제가 생각하는 가장 중요한 이유는 python 버젼 관리패키지 충돌 방지가 있습니다.

python은 현재 2.x 버젼과 3.x 버젼이 혼용되는 과도기에 있고 (물론, 요즘엔 대다수의 프로젝트들이 3.x로 많이 업그레이드를 하고 이를 support 하고 있습니다), 때론, 2.x 버젼의 python 환경에서 프로젝트를 개발해야할 때도 있고, 3.x버젼의 python 환경에서 개발해야할 때도 있습니다. 이럴 때마다, uninstall과 install하면서 python 버젼을 바꿀 수는 없을 것입니다.

두번째로, 프로젝트별로 필요한 python 패키지만 설치해서 사용하면 되는데, 가상환경이 아닌 곳에 패키지를 몽땅 설치해버리면 불필요한 패키지까지 설치된 환경이 될 것이고, 때론 dependency또한 꼬여버릴 수 있습니다. (마치, python 2.x 와 python 3.x 가 모두 설치 되었을때처럼 말이죠)

이러한 이유들로 프로젝트별로 각각의 가상환경을 만들고 이 환경에서 개발하는 것이 바람직합니다.

가상환경 설치하기

가상환경을 설치하는 방법은 몇가지가 있습니다. virtualenv, pyenv를 통해 만드는 방법도 있겠지만, 이번 포스팅에서는 Anaconda를 이용해 가상환경을 만들고 이를 관리하는 방법을 알아보겠습니다.

참고로, Anaconda는 python을 위해 만들어진 open source 입니다.

우선 Anaconda 설치를 위해 Anaconda Download Link에서 설치 파일을 다운로드 받으시고 설치 해 주시면 됩니다

Anaconda를 설치하셨으면, 터미널에서 conda라는 명령어를 통해 가상환경을 만들고, 패키지 관리를 하실 수 있습니다.

image-20180914033052999

Anaconda 기본 명령어 살펴보기

설치된 패키지 목록 보기

conda list

단일 패키지 설치

conda install pandas

2개 이상의 패키지 설치

pandas, numpy, tensorflow와 같이 2개 이상의 패키지를 설치할 때는 다음과 같이 입력해 주면 됩니다.

conda install pandas numpy tensorflow

단일 패키지 업데이트

conda update pandas

설치된 패키지 모두 업데이트

conda upgrade --all

패키지 제거

conda remove pandas

설치된 패키지 검색

검색하고자 하는 키워드 양옆에 *를 씌워주시고 ‘ ‘로 묶어서 검색해 주시면 됩니다.

conda search '*pandas*'

가상환경 만들기

가상환경을 만드는 방법 또한 매우 간단합니다.

예제 내용의 편의상 가상환경 이름은 my_python_env 로 하겠습니다.

가상환경 생성

conda create -n my_python_env

이렇게 하면 my_python_env의 이름으로 가상환경이 만들어 졌습니다.

만약, 가상환경을 만들면서 추가로 패키지도 install하고 싶다면 뒤에 패키지를 붙여주면 됩니다.

conda create -n my_python_env pandas tensorflow

python 의 버젼도 명시해서 설치해 줄 수 있습니다. 명시를 하지 않는다면, 가장 최신 버젼의 python 이 설치 됩니다.

python 2 설치

conda create -n my_python_env python=2

python 3 설치

conda create -n my_python_env python=3

python 3.4 설치

conda create -n my_python_env python=3.4

가상환경 시작 / 종료

가상환경을 만들기만 해서는 바로 동작하지 않습니다. 가상환경으로 진입해야 겠죠?

mac/linux 계열은 source라는 명령어를 앞에 붙여주어야 하고 windows 계열은 바로 activate my_python_env 를 입력해 주시면 됩니다.

mac/linux

source activate my_python_env

windows

activate my_python_env

아래와 같이 나온다면, 성공적으로 my_python_env에 진입한 것입니다. 앞에 (my_python_env)가 붙어야 합니다!

image-20180914035632384

deactivate 이라는 명령어로 가상환경을 종료할 수 있습니다.

mac/linux

source deactivate

windows

deactivate

가상환경 내보내기 (export) / 불러오기 / 리스트 / 제거하기

가상환경을 .yaml 파일로 내보내서 저장을 할 수도 있고, 이를 나중에 활용해서 새로운 가상환경을 만들 수 있습니다.

.yaml 파일로 저장

conda env export > my_python_env.yaml

image-20180914040328381

.yaml 파일로 새로운 가상환경 만들기

.yaml 파일에서 미리 저장해 둔 가상환경 설정을 그대로 가져와서 다른 이름의 동일한 가상환경을 만들 수 있습니다.

conda env create -f my_python_env.yaml

가상환경 리스트 출력

그 밖에 conda 에 설치된 가상환경 리스트도 볼 수 있습니다.

conda env list

가상환경 제거하기

가상환경을 제거하려면 다음과 같이 입력하면 됩니다. (my_python_env 에 제거하려는 가상환경 이름 입력)

conda env remove -n my_python_env

추가로 하나 더! (jupyter notebook, nb_conda)

Jupyter notebook는 브라우져 상에서 markdown, text, code, 시각화등등 다양한 기능을 할 수 있도록 해주는 매우 중요한 패키지 입니다.

conda install jupyter notebook

또한, jupyter notebook에서 python 패키지를 관리할 수 있도록 해주는 nb_conda도 설치해 줍니다.

conda install nb_conda

nb_conda가 설치 되었다면, jupyter notebook에서 상단에 conda 탭이 뜨고, 이 탭안에서 개별 패키지 관리를 브라우져 상에서 할 수 있습니다. 또한, 새로운 python notebook 을 만들 때도 미리 설정해 둔 가상환경으로 만들 수도 있구요. 새로운 패키지도 브라우져상에서 할 수 있습니다.

image-20180914041614156

마무리

그럼 이상 간단한 Anaconda 설치법 및 이를 활용하여 가상환경을 만들고 다루는 방법에 대해 알아 보았습니다. 다음에 시간이 된다면, jupyter notebook의 활용법에 대해서도 공유해 드리겠습니다. 감사합니다.



관련 글 더보기

- 뉴스 기사 와 RSS 피드에서 손쉽게 크롤링 하여 정보 수집하기

- python의 pickle 기능을 활용하여 data를 저장하고 불러오는 방법

- jupyter notebook remote 접속 허용 설정

- 파이썬(Python) - MySQL 패키지 (Client) 설치

- 파이썬(Python) 가상환경 설정하기

데이터 분석, 머신러닝, 딥러닝의 대중화를 꿈 꿉니다.