가상환경(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

+ Recent posts