가상환경이란?
가상환경(Virtual Environment)이란 특정 프로젝트에 대해 필요한 모듈만 따로 관리하기 위해 설정해놓는 독립적인 개발환경이라 생각하면 된다. 각 모듈마다 타 모듈에 대한 의존성이 다르기 때문에 충돌을 방지하고, 각 모듈의 버전을 관리하기 위해 주로 사용된다.
가상환경만들기
나는 파이썬 가상환경을 만드는 방법으로 크게 2가지를 사용하였다. Conda를 사용하는 방법과 파이썬 모듈인 venv를 사용하는 방법.
1. 파이썬 기본 모듈인 venv 모듈 사용
파이썬 3.3부터는 venv 모듈이 내장되기 때문에 별도의 패키지 설치 없이 바로 가상환경 구성이 가능하다.
먼저 가상환경을 구성할 프로젝트 폴더로 이동하자. 나는 envs 폴더에 가상환경을 구성할 것이다.
mkdir envs
cd envs
해당 프로젝트 폴더 안에서 python -m venv 가상환경이름을 입력하면 가상환경이 생성된다
python -m venv 가상환경이름
가상환경을 활성화.
.\가상환경이름\Scripts\activate.bat
가상환경을 실행하면 경로 앞에 (가상환경이름)이 붙는 것을 확인할 수 있다. 가상환경을 빠져나오려면 deactivate를 입력하면 된다
deactivate
+) ubuntu에서 venv 가상환경 설정하기(가상환경 이름 venv)
sudo apt-get install python3-venv
python3 -m venv venv
source ~/venv/bin/activate
2. conda 가상환경
콘다 명령어를 이용하려면 가장 먼저 anaconda를 설치해주어야 한다.
우선 anaconda 홈페이지로 가서 anaconda를 설치하자. 아나콘다가 무거워서 부담스럽고, 다른 패키지를 이용할 계획이 없다면 miniconda를 설치해주어도 무방하다.
https://www.anaconda.com/products/individual
Anaconda | Anaconda Distribution
Anaconda's open-source Distribution is the easiest way to perform Python/R data science and machine learning on a single machine.
www.anaconda.com
설치를 완료했다면 설치가 잘 되었는지 conda --v 명령어로 확인해보면, 버전이 나올 것이다.
그 다음 가상환경은 conda create -n 가상환경이름 python=원하는 파이썬 버전을 입력하면 간단하게 가상환경을 생성할 수 있다. 아래는 test라는 파이썬 3.9버전의 가상환경을 생성한 것이다.
conda create -n test python=3.9
가상환경 활성화
conda activate test
가상환경 비활성화
conda deactivate
venv는 설치된 파이썬 버전으로만 가상환경을 생성할 수 있으나, conda는 원하는 파이썬 버전을 선택하여 가상환경을 생성할 수 있다는 장점이 존재한다!
다만, 기존에 별도로 설치된 파이썬이 있을 경우 anaconda 설치 시 파이썬도 함께 설치되어 환경변수가 꼬일 수 있기 때문에 주의가 필요하다.
# 가상환경 내에서 패키지 설치, 삭제
가상환경이 활성화된 상태(가상환경이름이 포함된 괄호가 앞에 붙은 상태)에서 패키지를 설치하고 삭제 해주면 된다.
예를 들어, 가상환경이름이 venv이고 설치하려는 패키지가 requests라면,
(venv) pip install requests
(venv) pip uninstall requests
#패키지 목록 관리
현재 가상환경에 설치된 패키지 이름과 버전을 확인하려면 pip list
해당 패키지들을 다른 환경에 그대로 옮기려면 pip freeze를 입력하여 해당 목록이 포함된 requirements.txt라는 텍스트 파일을 만든 후, 새로운 환경에서 pip install -r requirements.txt를 입력해주면 된다
기존 환경
(venv) pip freeze > requirements.txt
새로운 환경
(new_env) pip install -r requirements.txt
'Django Project' 카테고리의 다른 글
Django 쿼리셋 특징 - Lazy Loading (0) | 2022.11.07 |
---|---|
헤로쿠로 앱 배포하기(3) - 캐싱으로 db부하 줄이기 (0) | 2022.10.09 |
헤로쿠로 앱 배포하기(2) (0) | 2022.10.09 |
헤로쿠로 앱 배포하기(1) (0) | 2022.10.06 |
댓글