Chapter 6. 가상 환경 사용하기 — 새롭게 정리

파이썬에서는 한 라이브러리에 대해서, 하나의 버전만 설치가 가능합니다. Django 를 예를 들어보죠. 현재 최신버전인 1.10.4 와 함께, LTS 버전인 1.8.17 을 같이 설치할 수 없습니다. 1.8.17 버전을 설치할려면 1.10.4 버전을 제거한 후에 다시 설치해야합니다. 다음 명령을 입력하면, 다른 버전의 Django 라이브러리를 제거한 후에, 지정된 버전을 새로이 설치합니다.

한 컴퓨터에서 한 개의 프로젝트만 하는 것이 아니라, 다수의 프로젝트를 개발하게 됩니다. 고로 다수의 라이브러리 버전을 쓸 수 밖에 없게 되죠. 그런데 이런 제약이 … :-(

이를 해결하기 위해 가상환경이 필요합니다. “격리된 별도의 라이브러리 설치 디렉토리" 를 뜻합니다. 다음 4가지 단계, 시나리오로 쓰시면 됩니다.

  1. 새로운 가상환경을 생성합니다.
  2. 생성된 가상환경을 활성화합니다.
  3. 활성화된 가상환경 내에서 필요한 라이브러리를 설치하고, 개발을 진행합니다.
  4. 현재 활성화된 가상환경을 비활성화합니다.

대개 가상환경은 관리 편의성을 위해 프로젝트 별로 하나씩 생성하시는 것이 좋습니다.

virtualenv — 써드파티 라이브러리

파이썬2에서는 가상환경 라이브러리가 기본 제공되지 않았기 때문에, 써드파티 라이브러리인 virtualenv 라이브러리가 필수입니다. 하지만 파이썬3에서는 venv 라는 가상환경 라이브러리가 기본제공되기 때문에, virtualenv 를 쓰지 않으셔도 됩니다.

각 단계는 총 6단계로 구분할 수 있겠습니다. 간략한 설명은 아래에 있으며, 그 아래에 실제 명령 예시도 같이 준비해봤습니다.

단계1) virtualenv 라이브러리 설치

  • pip 명령을 통해 virtualenv 라이브러리를 설치합니다.

단계2) virtualenv 명령을 통한, 가상환경 생성

  • virtualenv 라이브러리를 설치하면, virtualenv 명령행 프로그램이 설치됩니다.
  • 가상환경을 생성하면, 명령을 수행한 디렉토리에 지정한 이름의 디렉토리가 생성이 됩니다. 가상환경 별로 디렉토리가 1개씩 생성이 됩니다.

단계3) 생성된 가상환경 활성화

  • 가상환경 디렉토리를 생성만 해서는 그 가상환경을 쓸 수 없습니다. 활성화를 시켜줘야 합니다. “가상환경디렉토리/bin/activate” 스크립트를 통해 활성화시켜주실 수 있습니다. 이때 맥/리눅스 환경과 윈도우 환경에서는 명령이 다릅니다. 아래 예시를 참고해주세요.

단계4) pip 명령을 통해, 필요한 라이브러리 설치

  • pip 명령을 통해 필요한 라이브러리를 설치하는 것은 가상환경 사용유무에 상관없이 동일합니다. 단지 가상환경을 쓰면, 라이브러리가 가상환경 내에 설치가 된다는 것이 다릅니다.

단계5) 현 가상환경 내에서 프로젝트 개발

  • 이제 가상환경도 셋업이 되었으니, 다른 프로젝트와 라이브러리 버전 충돌 걱정잆이, 열심히 개발하면 되겠죠? :D
  • 개발 개발, Go~ Go~

단계6) deactivate 명령으로 현재 가상환경 비활성화

  • deactivate 명령으로 현재 가상환경을 비활성화시킬 수 있습니다. 비활성화시키면, 원래 기본 파이썬 환경으로 돌아옵니다.

venv — 파이썬3 기본제공 라이브러리

virtualenv 와 비교해서, 가상환경 생성 명령만 다를 뿐, 활성화/설치/비활성화 부분은 동일합니다. 파이썬3에서는 pyvenv 명령이 맥/리눅스에서만 기본제공될 뿐, 윈도우에서는 pyvenv 명령을 제공되고 있지 않습니다. 대신 “python3 -m venv” 명령으로 동일하게 명령을 수행하실 수 있습니다. 이는 맥/리눅스에서도 사용가능한 명령입니다.

위와 같이 새로운 가상환경 디렉토리를 생성하신 후에는, 위의 virtualenv, 단계3 부터 동일하게 사용하시면 됩니다.

가상환경 내에서 필요한 라이브러리 설치

책에서 vDjBook 라는 이름의 가상환경을 만들었네요. 같이 만들어봅시다.

윈도우에서 venv를 통해 vDjBook 가상환경 생성 및 활성화

윈도우에서 vDjBook 가상환경을 생성하고, 활성화시켰습니다. 각 명령행 앞에 (vDjBook) 가 붙으신 것을 확인하실 수 있습니다. deactivate 명령 (비활성화) 을 입력하시면, (vDjBook) 이 사라집니다.

이제 필요한 라이브러리를 설치해봅시다. 책에서 다음 라이브러리를 설치하네요.

  • django
  • pytz
  • django-tagging
  • django-disqus
  • pillow

위 라이브러리를 개별로 설치하셔도 되구요. 한 번의 명령으로 설치하실 수있습니다.

pip install 명령에 다수의 팩키지명을 나열하여 설치

매번 프로젝트 세팅할 때마다 직접 pip install 명령에 팩키지를 일일이 나열하는 것이 너무 번거롭습니다. 이럴때에는 팩키지 명을 파일에 나열해두고 명령 한 번으로 설치하실 수 있습니다.

먼저 아래 내용으로 requirements.txt 파일을 생성합니다. 1줄에 팩키지명 하나씩 써주세요. 파일명은 다른 어떤 이름이 되어도 상관없습니다만, 일반적으로 많이 쓰이는 네이밍이 requirements.txt 입니다.

이제 “pip install -r requirements.txt” 명령으로 한 번에 필요한 팩키지를 설치하실 수 있습니다.

설치할 팩키지를 파일에 나열한 후, 일괄 설치

설치된 팩키지 목록을 표준출력으로 찍어보기

가상환경과 무관하게, pip 에서는 현재 환경내에 설치된 팩키지 목록을 표준출력해주는 명령을 제공하고 있습니다. pip list 와 pip freeze 입니다.

pip 내 help 도움말 설명은 아래와 같습니다.

  • pip list : List installed packages.
  • pip freeze : Output installed packages in requirements format.

pip freeze 는 위 requirements.txt 에 바로 담을 수 있는 포맷으로 표준출력을 내어줍니다. 그러므로 “pip freeze > requirements.txt” 명령으로 현재 라이브러리 목록을 requirements.txt 에 담아서, 나중에 “pip install -r requirements.txt” 명령으로 현재 라이브러리 버전과 동일한 환경을 구성하실 수 있습니다.

pip list 명령에 대한 출력결과
pip freeze 명령에 대한 출력결과

파이썬/장고 질문은 http://facebook.com/groups/askdjango 를 통해 풀어가세요. 유튜브 채널에도 놀러오세요. ;)