[Anaconda] 아나콘다 가상환경의 개념 및 활용방법

업데이트:

개요

png

이번 포스팅에서는 가상환경(virtual environment)에 대해 알아보려고 한다.
파이썬을 처음 설치하고 배우기 시작할때 접하게 되는 개념이지만, 처음이라 그런지 무슨 말인지도 모르겠고 그냥 넘어갔던 기억이 난다. 컴퓨터와 파이썬이라는 언어와 꽤 친해지고 여러 오류들을 만난 뒤에서야 가상환경의 필요성을 느꼈고, 이번 기회에 제대로 개념을 알고 활용방법을 익히는 시간을 가지면 좋을 것 같다.

가상환경이란?

독립적인 작업환경에서 패키지 및 버전관리를 하기 위한 가상의 환경

아무것도 모른채 필요한 라이브러리를 계속 Base에 설치하다보면, 시간이 지남에 따라 경고(warning)문구나 각 라이브러리들의 의존성(dependancy) 문제로 인해 다양한 오류들을 만나 삽질한 기억이 있을 것이다.

또한 프로젝트마다 활용하는 다양한 라이브러리(특히 tensorflow 같은 경우)끼리 호환문제도 적지 않다. 다른 환경(컴퓨터, 서버 등)에서 동일한 작업을 하려면 이 환경을 똑같이 언제 다 만들까?

png
*출처 : https://django-easy-tutorial.blogspot.com/2015/08/python-virtual-environment-setup-in-ubuntu.html

이런 작업 환경들을 프로젝트별로 관리하고(like 폴더 개념) 공유도 할 수 있도록 도와주는 것이 바로 가상환경이다.


가상환경 다루기

가상환경은 virtualenvconda를 사용하는데, 내가 사용하는 Anaconda 환경에서의 conda명령어를 통해 활용하는 방법을 알아볼 것이다.

Anaconda 설치 완료된 이후부터의 설명이므로, Anaconda 설치를 먼저 하고 참고해야 한다.

png

설치 후 Anaconda Prompt 실행화면.

1. 가상환경 생성하기

가상환경을 생성할때는 생성할 환경의 이름과 Python버전 등을 설정해 줄 수 있다.

$ conda create -n 가상환경이름 python=버전

나는 현재 아나콘다는 3.8로 받았기 때문에, Python 3.7 버전으로 py37_test라는 이름의 가상환경을 생성했다.

png

가상환경 설정이 완료되고 나면, Anaconda3/envs/경로에 들어가면 생성한 py37_test폴더를 볼 수 있다(나의 경우 Anaconda를 D드라이브에 설치했다).

png

2. 가상환경 확인하기

현재 내가 만들어 놓은 가상환경들을 확인해보자.

$ conda info --envs

png

3. 가상환경 활성화하기

이제 생성한 가상환경으로 들어가보자.

$ conda activate 가상환경이름

png

앞의 환경을 보여주는 괄호()가 base에서 py37_test로 변경된 것을 알 수 있다.

4. 가상환경 비활성화하기

다시 가상환경을 나와 base로 돌아와 보자.

$ conda deactivate

png

5. 가상환경에 라이브러리 설치하기

다시 가상환경으로 들어가서 Geopandas 라이브러리를 설치해보자(Geopandas는 Base에 그냥 설치할때 의존성문제로 항상 이슈가 많다.).
설치는 똑같이 하면 된다.

$ conda activate 가상환경이름 
$ conda install geopandas

여기서 아래와 같이 하면 가상환경으로 들어가지 않고도 설치할 수 있다.

$ conda install -n 가상환경이름 geopandas

6. 가상환경 라이브러리 확인하기

방금 설치한 라이브러리가 잘 설치됐는지 확인해보자.

먼저 가상환경을 활성화 하고,

$ conda activate 가상환경이름

확인!

$ conda list

png

Geopandas가 잘 설치된 것을 확인할 수 있다.

Geopandas 설치 시, Pandas나 numpy같은 기본 라이브러리가 같이 설치되므로 Geopandas를 먼저 설치하여 충돌되지 않도록 하는 것이 좋은 것 같다.

7. 가상환경 복사하기

기존 가상환경과 똑같은 환경을 복제해보자.

$ conda create -n 복사된_가상환경이름 --clone 복사할_가상환경이름

기존 가상환경인 py37_test를 복사해 py37_copy라는 환경을 만들어보았다.

복사가 완료 된 후 아까 배운 conda info --envs를 통해 가상환경을 확인해보면,

png

py37_copy가 새로 생긴 것을 알 수 있다.

8. 가상환경 삭제하기

복사한 py37_copy 가상환경을 다시 제거해보자.

$ conda remove -n 가상환경이름 --all


라이브러리(패키지) 관리

가상환경을 쓰는 가장 큰 이유라고도 할 수 있는 라이브러리(패키지) 관리이다. 가상환경에 설치된 패키지들은 목록으로 저장해두었다가, 언제 어디서든 다시 설치하여 동일한 환경으로 만들 수 있다.

$ pip freeze > requirements.txt

가상환경을 활성화 시킨 상태에서 위 명령어를 통해 패키지의 목록과 버전 정보들을 requirements.txt 파일에 저장한다. 특히 git 등으로 버전 관리를 할때 이 requirements.txt파일만 관리를 해주면 된다. git의 오픈소스나 프로젝트들을 염탐하다보면 이 파일을 종종 볼 수 있다.

아까 만든 py37_test 가상환경의 패키지 목록을 내보내보자.

png

requirments.txt파일은 프롬프트의 경로에 저장된다(여기서는 C:\Users\user).

png

아까 설치했던 Geopandas 라이브러리도 보인다!

이제 다시 새로운 가상환경에서 동일한 라이브러리(패키지)를 구성해야 된다고 가정해보자.

$ pip install -r requirements.txt

위 명령을 통해 새로운 가상환경에서도 requirements.txt 목록을 불러와 똑같은 환경에 맞게 설치할 수 있다.

$ pip uninstall -r requirements.txt

위 명령어로는 requirements.txt 목록에 해당하는 패키지들을 삭제한다.


Reference

https://dandyrilla.github.io/2018-10-01/conda-env/

https://chancoding.tistory.com/85

댓글남기기