빅데이터 혁신융합대학

Bigdata University

Bigdata University

Contents Module

[알쓸빅잡]가상환경의 이해 - 하나밖에 없는 소중한 것을 지키려면....

등록일 2022-09-23


하나밖에 없는 소중한 것을 지키려면...

 

가상환경의 이해 -


야마다 아키히코

언어학 박사 / 자연어처리전공


2Q==



소중한 것을 지키기 위하여...

사람들은 소중한 것이 생겼을 때 가능한 그것을 유지하기 위해 사람은 여러가지 노력을 한다. 귀중한 것 하나만 소유하고 있으면 그것이 없어지거나 고장이 나면 안 된다고 생각해 가능한 여러 개를 소유하거나 복사본을 만들어 만일 하나가 없어져도 괜찮도록 준비하기도 한다. 예를 들어 나도 어릴 때 소중한 물건에 대해서는 2개를 구입하고 하나는 보관용으로 했다.

또 학부생 때 유기화학 실험을 할 때도 몇 주나 되는 오랜 시간 동안 합성한 화학물질을 한번의 실험하지 않았다. 그 실험이 실패하면 그 물질을 만들 때까지 몇 주가 엉망이 되기 때문이다. 그래서 여러 용기에 나눠서 저장하고 조금씩 사용함으로써 만일 다음 실험이 실패하여 그 물질이 엉망이 되더라도 다른 용기에서 그 물질을 꺼내 그 시점부터 실험을 재개할 수 있도록 하였다.

이렇듯 사람들은 소중한 것들을 몇 개로 분할해서 보관함으로써 실패하더라도 바로 다시 시작할 수 있도록 준비한다고 생각한다.


코딩 개발에서 소중한 것....개발환경

현재 데이터에 관한 일을 하면서 귀하게 느끼는 것은 역시 자신이 오랜 시간에 걸쳐 만들어낸 코드이지만 그 코드를 작동시키는 코딩 환경도 아주 중요하다고 느끼고 있다. 코드 자체에 대해서는 잃어버려도 괜찮도록 복사본을 만들어 하드디스크에 보관하면 된다. 그러나 코딩을 하면서 관리가 더 어렵다고 생각한 것은 그 코드를 작동시키기 위해 필요한 라이브러리가 복잡하게 설치돼 있는 개발 환경(프로젝트 환경)이라고 생각하게 됐다.

최근의 코딩은 완전히 밑바닥에서 개발할 기회가 적어 라이브러리를 설치하고 그것을 import해서 사용함으로써 쉽게 코딩하는 것이 대부분이다. 그렇기 때문에 코딩을 하면서 개발을 해나가는 과정에서 여러 라이브러리를 설치하게 되는데 가끔 라이브러리와 라이브러리 사이에 문제가 생겨 코드가 움직이지 않을 때가 있다.

또한 라이브러리도 항상 개선이 진행되기 때문에 같은 이름의 라이브러리라도 버전이 다양하다(예를 들어 tensorflow 1.0과 tensorflow 2.0). 심지어 python 자체도 python 2와 python 3이 있다. 때문에 같은 코드라도 tensor flow 1.0에서는 문제없이 움직이는데 tensor flow 2.0에서는 오류가 생기거나 하는 버전관련된 오류가 빈번할 수 있다.

이러한 문제는 사용하는 라이브러리가 많아질수록 복잡해지고 라이브러리와 라이브러리 사이에서 일어나고 있는 것은 생각보다 복잡하며 수정하기 위해서는 컴퓨터에 대한 깊은 지식을 필요로 하는 경우가 있어 많은 시간을 낭비하게 된다. 만약에 개발환경이 컴퓨터에 하나밖에 없는데 그 개발환경 속에서 이런 라이브러리의 문제가 생긴다면 정말 골치 아프고 결국은 컴퓨터 자체를 초기화해야 할지도 모른다. 


상환경의 중요성

이러한 문제도 개발 환경을 하나만 갖는 것이 아니라 여러 가지를 가짐으로써 해결할 수 있다. 이를 가능하게 하는 기술이 이번 글에서 소개할 가상환경(Virtual Environment)이라는 기술이다. 가상환경은 단순하고 쉽게 말해 하나의 폴더 안에 프로그래밍 개발 환경을 독립적으로 만들어 (실제 폴더가 생성되기도 함) 그 폴더 안에서 개발을 해 나간다는 것이다.

파이썬으로 설명하자면 폴더 안에 python과 python 라이브러리를 설치하기 위한 도구들이 들어 있고 그 폴더 안에서 개발을 하기 때문에 설치된 라이브러리들은 그 폴더 안에 설치되어 컴퓨터 전체 시스템에는 영향을 미치지 않는다. 그렇기 때문에 만약 개발하다가 문제가 생기더라도 컴퓨터 자체를 초기화할 필요 없이 또 다른 가상환경을 만들고 거기서 개발을 재개해 나가면 된다. 

파이썬으로 설명하자면 폴더 안에 python과 python 라이브러리를 설치하기 위한 도구들이 들어 있고 그 폴더 안에서 개발을 하기 때문에 설치된 라이브러리들은 그 폴더 안에 설치되어 컴퓨터 전체 시스템에는 영향을 미치지 않는다. 그렇기 때문에 만약 개발하다가 문제가 생기더라도 컴퓨터 자체를 초기화할 필요 없이 또 다른 가상환경을 만들고 거기서 개발을 재개해 나가면 된다. 

게다가 개발 환경은 얼마든지 만들 수 있으므로, 자신이 사용하고 싶은 라이브러리의 버전에 맞추어 개발 환경을 따로 만들어 갈 수 있다. 예를 들어 python 2 환경과 python 3 환경도 만들 수 있고, tensorflow 1 환경과 tensorflow 2 환경을 만듦으로써 자신이 원하는 분석을 필요에 맞게 할 수 있다. 



가상환경을 위한 툴

내가 python 가상환경을 제일 많이 사용하는 관계로 여기서는 파이썬 가상환경 툴을 소개한다.


1. 아나콘다(Anaconda) 

가상환경을 만들어내는 툴로 가장 유명한 것이 아나콘다인 것 같다. 파이썬 자체가 뱀 이름이고 그 개발을 돕는 도구 이름이 아나콘다라는 것은 정말 유머러스하다. 내가 코딩을 배우기 시작했을 때는 아나콘다가 그렇게 유명하지도 않았고 파이썬 자체가 유명하지도 않았다. 딥러닝의 인기가 높아지면서 파이썬이 유명해지고 아나콘다도 유명해진 느낌이 들었다.

처음 아나콘다는 그저 라이브러리를 설치할 때 필요한 라이브러리를 함께 설치해 주는 편리한 툴 정도로 여겼다. 하지만 아나콘다에 가상환경이라는 기능이 있다는 것을 알게 되면서 엄청나게 편리한 것을 알게 됐다. 또 막상 개발을 하다가 어느 날 갑자기 라이브러리 간에 문제가 생겨 어쩔 수 없게 됐을 때 또 다른 가상환경을 만들고 바로 대처할 수 있었던 것을 경험하면서 정말 가상 환경이 중요하다고 생각했다.

아나콘다는 무료로 사용가능하고 https://www.anaconda.com/에 자세한 내용이 나와있다.

가상환경을 만드는 방법은 간단하다.


여기에서는 Terminal에서

$conda create –n virtual_environment(원하는 이름)라고 하면 자동적으로 virtual_environment라 이름의 가상환경이 생성된다.

다음에 $conda (or source) activate virtual_environment라고 하면 이 가상환경이 활성화 된다.

즉 가상환경이라는 폴더 속으로 들어갔다고 생각해도 된다.

필요한 라이브러리를 설치할 때는 $conda install “package name” 라고 하면 그 환경 안에 설치가 진행된다.

마지막으로 $conda (or source) deactivate라고 하면 가상환경에서 나오게 된다.

아나콘다를 사용해서 가상환경을 경험하기 바란다.


2. venv

venv도 아나콘다와 같이 일하지만 아나콘다보다 심플하고 가벼운 가상 환경을 만들어 준다. 박사과정 때 처음에는 아나콘다를 사용하다가 여러 가지 일을 자동으로 해주기 때문에 편리하긴 하지만 내가 원하지 않는 것까지 설치하곤 해서 가끔 문제를 일으킬 때가 있었다. 그럴 때 인공지능 딥러닝 연구를 하는 후배가 venv를 가르쳐줘서 그 단순함이 오히려 딱 좋았고 결국 박사논문 연구를 할 때는 venv를 사용했다.

아나콘다보다는 약간 사용법이 전문적인 면은 있으나 아래와 같이 사용하면 된다.


$pip install virtualenv 로 설치하고

$python3 –m venv virtual_environment(원하는 이름) 로 만들고

$source virtual_environment/bin/activate 로 활성화하고

$pip install “package”로 라이브러리를 설치하고

$deactivate 로 종료하면 된다.


여기서 소개한 것 외에도 가상환경을 만들 수 있는 툴은 더 있으며 다른 언어까지 생각하면 더 많을 것이라 생각된다.


가상이 유행하는 시대에...

코딩을 하는 일을 하는 입장에서 개발환경을 여러 개 만드는 것으로 컴퓨터 자체를 문제에서 방어할 뿐 아니라 개발을 쉽게 만들어 주는 가상환경이라는 기술은 정말 감사한 기술이다. 가상이라는 단어는 프로그래밍뿐만 아니라, 메타버스 등의 가상세계와 가상현실(Virtual Reality)등 최근에는 생활 속에도 사용되고 있는 것 같다.

가상이라는 것이 발달하고 많은 이익을 주고 있는 시대이지만 우리의 인생에는 여전히 가상인생은 없고 단 하나의 귀중한 인생이다. 가상이 대중화된 시대에 가상환경에 대해 글을 쓰며 단 한번뿐인 인생을 어떻게 가치 있게 만들어갈지 다시 깊이 생각해 보면서 이번 글을 마친다.