가상환경(virtual environment)을 쓰는 이유
가상환경이란 독립된 공간을 만들어 주는 기능
- 하나의 프로젝트만을 위해서 설치한 패키지가 무엇인지 쉽게 확인하고 테스트 할 수 있게 된다.
즉 가상환경은 프로젝트와 그 프로젝트에 사용된 패키지들을 언제나 한 묶음으로 움직일 수 있게 해주는 역할!
장점
- 한 프로젝트를 위해 확실히 작동하는 버전의 여러 패키지들을 한데 모아서 관리
- 프로젝트를 배표하면 원격 서버에 따로 패키지를 설치해야하는데 한정된 서버 공간에 효율적으로 필요한 패키지만을 설치하기 위해 필요
가상환경 비교
VENV (virtualenv)
- python에서 기본 모듈로 지원
- 현재 시스템에 설치되어 있는 버전의 python을 기반으로 패키지 가상화 환경 제공
설치
# 가상환경 생성
# myvenv 가상환경 이름
# 소문자, 공백x
python3 -m venv myvenv
# 가상환경 실행
source myvenv/bin/activate
## source가 없을 수도 있음
. myvenv/bin/activate
# 가상환경 종료
deactivate
# 다운받은 패키지 리스트 저장
pip freeze > requirements.txt
# 패키지 리스트 항목 다운
pip install -r requirements.txt
pipenv
- 필요한 것만 정의하면서, 결정론적인(deterministic, 파일에 정의된대로) 빌드가 가능하다.
- 락이 걸린 의존성에 대해 해쉬 파일을 생성하고 확인한다.
- pyenv가 사용 가능하다면, 필요한 python도 자동으로 설치한다.
- Pipfile을 찾으면서자동으로 프로젝트 홈을 찾아준다.
- Pipfile이 없다면 자동으로 생성해준다.
- 자동으로 virtualenv 환경을 생성한다.
- 패키지를 설치/삭제하면, 자동으로 Pipfile에서 추가/삭제한다.
- 자동으로 .env 파일을 인식한다.
- 의존성 그래프를 제공함으로서 insight를 제공한다 (e.g.
$ pipenv graph
).단점 - 오픈소스이기에 python 버전, pip 버전에 즉각적인 대응이 느림
설치
# pipenv 설치
pip install pipenv
# 가상환경 생성(생략 가능)
pipenv --python 3.7
# 가상환경 활성화(없으면 만들고 활성화)
pipenv shell
# 비활성화
exit
# 가상환경 제거
pipenv -rm
# 패키지 설치
# 패키지가 설치되면 pipfile 파일의 [packages]에 명시됨
pipenv install [패키지명]
# pipfile의 모든 패키지 설치
pipenv install
# 프로젝트에 설치된 패키지 트리구조로 보기
pipenv graph
# 보안 취약점이 있는 패키지 체크
pipenv check
docker
- 기존 가상환경의 한계점인 os 환경까지 독립적으로 구성 가능
728x90
'Study > Django' 카테고리의 다른 글
[Django] settings.py - cors, static path (0) | 2021.05.11 |
---|---|
[Django] Serializers (0) | 2021.05.11 |
[Django] models.py (0) | 2021.05.10 |
[Django] app, mysql 추가 및 연결 (0) | 2021.05.10 |
[Django + pycharm] 개발환경 세팅 (0) | 2021.05.02 |