TIL - 03/31 - Python 가상환경

Sung Jun Jin·2020년 3월 31일
0

TIL

목록 보기
9/25
post-custom-banner

가상환경이란?

여러개의 프로젝트를 진행하게 되면 각 프로젝트마다 사용해야할 버전과, 라이브러리들이 다르다. 예를 들어보자

A라는 프로젝트는 Python2 기반 Django 1.5버전 기반이고 프로젝트의 필요한 다양한 라이브러리들을 pip을 사용해 설치했다.

B라는 프로젝트는 Python3 기반 Django 2.2버전 기반이고 이 프로젝트 또한 다양한 라이브러리들을 설치했다.

이때 위 2개의 프로젝트를 동시에 개발해야할 상황이 오면, 개발자는 A,B 프로젝트에 필요한 버전과 패키지들을 모두 설치하여 각 프로젝트의 작업환경을 바꿀때마다 다른 버전의 라이브러리를 설치하는 등의 수동적인 관리를 해줘야 한다.

이를 방지하기 위해서 Python은 각자의 격리된 독립적인 가상환경을 제공한다.

Conda

Conda는 Anaconda Python을 설치했을 시 사용할 수 있는 모듈이다. Anaconda는 수학, 과학 분야에서 사용되는 여러 패키지를 모아 놓은 패키지 매니저이자 가상환경 관리 프로그램이다. 용량이 상당하므로 축소판인 Miniconda를 사용해 가상환경을 만들어줄 수 있다.

Miniconda 설치하기 (Linux)

미니콘다 설치 프로그램 링크
https://docs.conda.io/en/latest/miniconda.html

  1. Python 3.7의 Miniconda Linux-64 bit를 우클릭 한 후 링크 주소 복사를 클릭한다.

  2. wget 명령어를 사용하여 복사된 링크의 파일을 다운받는다.

sudo wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
  1. 설치 프로그램이 다운로드된 디렉토리에 가면 Miniconda3-latest-Linux-x86_64.sh 파일이 있을것이다. 실행시켜주면 설치과정이 진행된다. 모든 과정은 Y로 해준다.

  2. 설치가 완료된 후 터미널을 껐다 다시 시작하고 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

가상환경 export 하기 (배포용 yaml 만들기)

conda env export> 가상환경이름.yaml

export한 가상환경 import하기

conda env create -f 가상환경이름.yaml

마지막으로 가상환경을 만들었다고 프로젝트를 굳이 가상환경이 만들어진 디렉토리로 가서 생성하여 작업할 필요는 없다. 가상환경은 언제까지나 그 프로젝트가 필요한 라이브러리가 설치된 환경이지 디렉토리 경로에 의존적이진 않다.

profile
주니어 개발쟈🤦‍♂️
post-custom-banner

0개의 댓글