티스토리 뷰

We think about IT

[Python] Python 가상환경

알 수 없는 사용자 2020. 10. 11. 00:18

Why So Serious? Just For Fun. No Fun No Gain.

 

안녕하세요. 누누 컴퍼니의 으악SOUND입니다. 원래 계획대로라면 데이터베이스에 대한 다음 시리즈를 포스팅해야 하는데, 금주 개발을 진행하며 한 번쯤 공유하고 싶은 내용이 생겨 주제를 바꾸게 되었습니다. 다음 포스팅에서는 다시 데이터베이스를 주제로 돌아오겠습니다. 오늘 공유하고 싶은 내용은 가상 환경에 대한 이야기입니다. 가상 환경은 Python 뿐만 아니라 버전에 민감한 언어라면 필수적으로 사용해야 하고, 민감하지 않더라도 쾌적한 개발 환경을 위해 사용하는 것이 좋습니다. 저는 현재  Python을 사용하고 있기 때문에 Python을 기준으로 가상 환경의 중요성과 가상 환경 구축을 도와주는 모듈들을 비교해보는 시간을 갖도록 하겠습니다.

하나의 컴퓨터에서는 많은 프로젝트를 작업하게 됩니다. 만약에 전역 파이썬 환경만 구축한 상태로 여러 프로젝트를 실행하려고 한다면, 전역 파이썬 환경에 맞는 프로젝트만 실행되고 다른 프로젝트들에서는 호환성 문제가 발생할 가능성이 있습니다. 또한 다른 프로젝트를 호환성 문제 없이 실행하고자 한다면 전역 파이썬 환경을 지운 뒤에 다시 설치해야 하는 번거로움이 존재합니다. 이러한 문제를 해결하기 위해 나온 것이 가상 환경입니다.

가상 환경을 사용하게 되면 전역에 파이썬 환경을 구축하는 것이 아니라 폴더별로 환경을 구축하게 됩니다. 해당 폴더의 환경을 Activate, Deactivate 하는 것으로 매번 전역 파이썬 환경을 재구축할 필요성이 없어지고, 가상환경이 더이상 필요없어지게 되면 폴더만 지워내는 것으로 제거가 가능합니다. 즉, 가상 환경은 독립된 공간을 만들어주는 기능이라고 할 수 있습니다. 가상환경의 중요성은 여기까지만 소개하는 것으로 하고, 가상환경을 다룰 수 있는 모듈들을 소개하도록 하겠습니다.


1. Anaconda

Anaconda의 conda 가상 환경은 Windows, MacOS 구분 없이 많이 사용되는 방법 중에 하나입니다. Anaconda는 패키지 관리와 배포를 단순화해주고, 과학 계산을 위한 라이브러리를 사용하기 용이하도록 해놓은 오픈 소스입니다. 파이썬을 이용하여 수학 및 과학에 관련된 작업, 머신러닝이나 데이터 분석을 하고자 한다면 다양한 라이브러리를 동시에 사용해야 하는데 각각의 라이브러리들은 호환성 문제를 자주 일으킵니다. Anaconda에서는 이러한 호환성 문제를 해결할 수 있도록 특정 버전을 유지하여 개발을 진행할 때 문제를 줄여줍니다. 만약 수학, 과학과 밀접한 프로젝트를 진행 중이시라면 Anaconda를 사용하는 것을 추천드립니다.

 

2. Pyenv, Virtualenv, AutoEnv

Pyenv, Virtualenv, AutoEnv를 혼합하여 가상 환경을 구축하는 것은 MacOS에서만 가능합니다. pyenv-win이 있긴 하지만 애초에 리눅스 기반을 위해 만들어진 모듈이기 때문에 많이 사용되진 않습니다. 각각 역할이 존재하는데 Pyenv의 경우에는 시스템 내에 여러 버전의 Python을 설치하고 관리할 수 있도록 도와줍니다. Pyenv는 Python의 버전만 관리해주기 때문에 동일한 버전에서 다른 패키지를 관리해야할 때가 존재합니다. 이 때 사용하는 것이 Virtualenv입니다. Virualenv는 폴더마다 패키지 설치 공간을 격리하는 역할을 합니다. Pyenv를 이용하여 Python 버전을 격리하고, Virtualenv를 이용하여 동일 Python 버전 내에 패키지 공간을 격리해주게 됩니다. Autoenv의 경우에는 특정 환경을 오갈 때 매번 가상환경을 Activate 했다가 Deactivate 해주는 작업을 자동화해주는 역할을 하게 됩니다.

Pyenv의 경우에는 기본 Python 뿐만 아니라 Anaconda도 설치할 수 있도록 도와주는데 웬만하면 conda와 혼용하여 환경을 구축하지 않는 것을 추천드립니다.


그 외에도 pipenv 등 가상 환경을 구축하는 방법에는 여러가지 종류가 있을 수 있습니다. 가상환경을 잘 관리하고 유지하는 것은 환경이 꼬여 개발에 영향을 미치는 것을 방지할 수 있어 매우 중요하다고 할 수 있습니다. 읽어주셔서 감사합니다.

 

댓글