여러개의 프로젝트를 진행하게 되면 각 프로젝트마다 사용해야할 버전과, 라이브러리들이 다르다. 예를 들어보자
A라는 프로젝트는 Python2 기반 Django 1.5버전 기반이고 프로젝트의 필요한 다양한 라이브러리들을 pip을 사용해 설치했다.
B라는 프로젝트는 Python3 기반 Django 2.2버전 기반이고 이 프로젝트 또한 다양한 라이브러리들을 설치했다.
이때 위 2개의 프로젝트를 동시에 개발해야할 상황이 오면, 개발자는 A,B 프로젝트에 필요한 버전과 패키지들을 모두 설치하여 각 프로젝트의 작업환경을 바꿀때마다 다른 버전의 라이브러리를 설치하는 등의 수동적인 관리를 해줘야 한다.
이를 방지하기 위해서 Python은 각자의 격리된 독립적인 가상환경을 제공한다.
Conda는 Anaconda Python을 설치했을 시 사용할 수 있는 모듈이다. Anaconda는 수학, 과학 분야에서 사용되는 여러 패키지를 모아 놓은 패키지 매니저이자 가상환경 관리 프로그램이다. 용량이 상당하므로 축소판인 Miniconda를 사용해 가상환경을 만들어줄 수 있다.
미니콘다 설치 프로그램 링크
https://docs.conda.io/en/latest/miniconda.html
Python 3.7의 Miniconda Linux-64 bit를 우클릭 한 후 링크 주소 복사를 클릭한다.
wget 명령어를 사용하여 복사된 링크의 파일을 다운받는다.
sudo wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
설치 프로그램이 다운로드된 디렉토리에 가면 Miniconda3-latest-Linux-x86_64.sh 파일이 있을것이다. 실행시켜주면 설치과정이 진행된다. 모든 과정은 Y로 해준다.
설치가 완료된 후 터미널을 껐다 다시 시작하고 conda 명령어를 치면 아래와 같은 화면이 나온다.
conda env list
위와 같은 화면이 나오는데 base는 default 값이다.
conda create -n 가상환경이름 python = 버전
test라는 이름을 가진 python 버전 3.8의 가상환경을 만들어봤다. 여기서 주의해야 할 것은 가상환경을 구축할때 Python버전을 꼭 명시해줘야 한다는 것이다.
시험삼아 버전을 명시해주지 않은 채로 가상환경을 만들고 python --version 명령어를 사용해봤다.
Python 3.7.6이 나온다. 반대로 버전을 Python 3.8로 명시해주고 python --version 명령어를 사용해봤다.
Python 3,8.2가 나온다. 따라서 버전 명시는 Python 가상환경을 새로 만들때 잊지말고 확실하게 해주는것이 좋다. 또한 가상환경 이름은 프로젝트명으로 통일하는것이 가장 깔끔하다.
conda env remove -n 가상환경이름
conda activate 가상환경이름
위에서 만든 test라는 가상환경을 활성화 시켜보자.
명령어를 입력후 터미널의 가장 왼쪽 부분이 활성화된 가상환경의 이름이 test) 로 바뀐것을 확인할 수 있다.
conda deactivate
conda env export> 가상환경이름.yaml
conda env create -f 가상환경이름.yaml
마지막으로 가상환경을 만들었다고 프로젝트를 굳이 가상환경이 만들어진 디렉토리로 가서 생성하여 작업할 필요는 없다. 가상환경은 언제까지나 그 프로젝트가 필요한 라이브러리가 설치된 환경이지 디렉토리 경로에 의존적이진 않다.