hyein's 로봇 알고리즘 연구소

python 가상환경(virtual environment) 설정하기 - 아나콘다(Anaconda) 본문

Programming/Python

python 가상환경(virtual environment) 설정하기 - 아나콘다(Anaconda)

hyein14 2020. 12. 22. 18:10

안녕하세요. Programming 카테고리에 첫 글이네요. :) 

 

이번 포스팅에서는 python으로 개발할 때 필수적으로 필요한 가상환경(virtual environment)을 설정하는 방법에 대해 이야기를 해보고자 합니다.

 

저 뿐만 아니라 요즘 많은 분들이 로봇 제어 시뮬레이션을 하거나 알고리즘들을 테스트할 때, 자주 사용하는 언어가 python입니다. python이 문자열 처리에 강점을 가지고 있을 뿐만 아니라 open source로 개발이 많이 되다보니 matlab에서는 유료였던 control toolbox는 물론 딥러닝(deep learning frame work)이나 강화학습 이미지 처리, 영상 처리 등을 다루는 많은 패키지(package)들이 무료로 직관적인 언어로 강력하게 사용할 수 있어서 위와 같은 어플리케이션에 자주 사용됩니다.

 

1. 가상환경(virtual environment)이란?

가상환경이란 말그대로 가상의 개발 환경입니다. 왜 가상환경을 만들까요? project의 의존성(dependency)문제가 제일 큽니다. github에서 open source를 받다보면, requirements라고 적힌 것이 있습니다.

pybullet>=3.0.6
gym==0.17.1
numpy==1.17.3
tensorflow==1.15.4
tensorboard==1.15.0
typing==3.7.4.1
stable-baselines==2.10.0
tqdm
numba
quadprog
inputs

numpy == 1.17.3, pybullet >=3.0.6처럼 version이 적혀있죠? A라는 프로그램을 실행하기 위해서는 위의 version이 설치가 되어 있어야 합니다. 만약 우리가 하나의 환경에서 python, pybullet, gym 등을 설치하여 사용한다면 A 프로그램은 돌아갈 수 있겠지만, tensorflow >= 2.0이 필요한 B 프로그램에서는 필요한 요구조건을 만족 시킬 수 없겠죠? 그렇다고 tensorflow를 2.0이상 version으로 다시 설치하게 된다면, A 프로그램은 의존성 문제로 돌아가지 않을 겁니다.

 

이를 해결하기 위한 방법이 바로, 특정한 버전(version)의 python과 package들을 관리하기 위해 가상환경을 만드는 겁니다.

 

2. 가상환경 설치하기

1) 아나콘다 설치

 

가상환경을 관리하기 쉬운 방법 중 하나는 Anconda를 이용하는 것입니다. 즉, anaconda를 통해 가상환경을 만들고 python package들을 관리할 수 있습니다. 먼저, 하기 URL에 들어가서 아나콘다(anaconda)를 설치해주세요.

 

www.anaconda.com/

 

Anaconda | The World's Most Popular Data Science Platform

Anaconda is the birthplace of Python data science. We are a movement of data scientists, data-driven enterprises, and open source communities.

www.anaconda.com

2) 가상환경 만들기

 

linux이용자라면 터미널을 열고 'conda create -n <name of environment>'라고 입력하면 가상환경이 만들어집니다. 우리는 가상환경의 이름을 my_env라고 하겠습니다. 

 

conda create -n my_env

이러면 my_env라고 가상환경이 만들어 집니다.

 

만약 가상환경을 만들면서 python 3.7, numpy 1.18와 같은 패키지(package)를 동시에 설치하고 싶다면 아래와 같이 환경 이름 뒤에 패키지들을 붙여주면 됩니다.

conda create -n my_env python=3.7 numpy=1.18

 

3) 가상환경 실행하기

 

만들어진 가상환경은 'conda env list'를 통해 확인할 수 있습니다.

conda env list

아래와 같이 my_env라는 가상환경이 만들어진게 보이죠?

 

 

이 가상환경을 활성화 시키려면 'conda activate <name of environment>'를 입력하면 됩니다.

conda activate my_env

 

4) 패키지 관리 

 

my_env라는 가상환경이 만들어졌습니다. 위에서 anaconda가 가상환경을 만들어주고 python package들을 관리하는 open source라고 했죠? 그러면 my_env라는 가상환경에서 설치된 package들을 확인해보고, 새로운 package를 설치해보도록 하겠습니다. 

먼저,  'conda activate my_env'로 가상환경을 활성화 해주고, 'conda list'를 입력해보면 가상환경에서 설치된 package 목록이 version별로 보입니다.

conda list

 

 

아까 numpy 1.18, python 3.7 설치한 것도 보이네요. 위 환경에서 새로운 package를 설치하려면 'conda install -c conda-forge [name of package]'를 입력하면 됩니다. 만약 tensorflow 2.0을 설치한다면 다음과 같이 입력하면 되겠죠?

 

conda install -c conda-forge tensorflow=2.0

 

패키지 제거는 'conda remove [name of package]' 명령어를 통해 해주시면 됩니다.

conda remove tensorflow=2.0

 

5) 가상환경 종료하기

 

새로운 가상환경으로 들어가기 위해 my_env라는 가상환경을 종료하려면 'conda deactivate'를 입력하면 됩니다.

conda deactivate

 

6) 가상환경 배포

 

프로그램이 잘 동작하기 위해서 의존성(dependency)문제로 인해 package들의 요구 version을 맞추어야 한다고 했습니다. 만약 다른 사람과 협업을 한다면 똑같은 version의 package가 깔린 환경이 필요합니다. 설치된 package들을 일일히 알려주기도 어렵고 설치 목록을 한번에 설치할 수 있는 방법이 있습니다. 바로 yaml파일로 저장하는 겁니다.

 

conda env export -n my_env > my_env.yaml

 

그럼 .yaml확장자로 아래와 같이 my_env의 package들과 관련된 정보가 만들어집니다. 

 

 

그럼 .yaml 파일을 팀원에게 공유하고, 팀원이 아래와 같은 입력을 하면, 우리가 공유한 my_env와 똑같은 가상환경을 갖게 됩니다.

conda env create -f my_env.yaml 

 

7) 가상환경 제거하기

 

가상환경을 제거하려면 'conda env remove -n <name of environment>'를 입력하면 됩니다.

conda env remove -n my_env

 

가상환경이 왜 필요한지, 아나콘다(Anaconda)를 이용해서 어떻게 가상환경을 설치하고 패키지(package)들을 관리할 수 있는 지에 대해 알아보았습니다. python으로 개발환경을 구축하는 분들에게 큰 도움이 되었으면 합니다.

Comments