Namu | 나무 개발자 블로그입니다


Python 가상환경을 만드는 방법 by namu

post image
image by StockSnap

[목차]

  1. 들어가며
  2. pip
  3. virtualenv
  4. pipenv
  5. gitignore 에 포함할 것들

[참조]

  1. python.org, “pip and virtual environments”
  2. velog.io


들어가며

파이썬에서 가상환경 개념은 매우 중요하다. 여러 개의 프로젝트를 동시에 개발할 때 각각 고유한 파이썬 개발환경을 구축하고(의존성 포함) 상호간에 영향을 미치지 않도록 해야 하기 때문이다. 파이썬으로 개발한다면 언제나 가상환경부터 구축해야 한다는 점을 유념해야 한다.

먼저 os global 영역에 파이썬이 설치되어 있다고 가정하고 출발해보자. python 3.x 버전이라면 무엇이든 가능하다.

pip

pip 는 파이썬 패키지 매니저이다. 현재 사용하는 파이썬 버전에 의존적인 모든 패키지들을 pypi.org 아카이브로부터 설치 및 업데이트 해준다. os global 영역에 파이썬이 설치되어 있다면 기본적으로 pip 도 설치되어 있다.

virtualenv

virtualenv 모듈은 프로젝트 내에서 가상환경을 만들어 파이썬 패키지들을 관리해준다. 위의 global pip 를 활용해 virtualenv 를 설치한 후, 내 프로젝트를 위한 가상환경을 생성해 보자.

tip 1

당연하겠지만 환경변수에 global python 인터프리터를 등록해 두자. pip 까지 자유롭게 쓰게.

이로써 가상환경 내 파이썬 인터프리터에 requests 패키지가 설치되었다. python import 를 통해 확인해 보자.

pipenv

이것도 가상환경을 구축하고 관리한다는 점에서 동일하다.
하나 차이점은, pip + virtualenv == pipenv 라는 것!

Tip 2

pipenv 는 더 편리하지만, 업데이트가 느리고 블랙박스 동작이 있다고 한다. 그래도 현업에 사용하기에 큰 무리는 없다. 내가 그렇게 사용하고 있으니.. 그러므로 pipenv 를 사용하고자 한다면, 먼저 pip, virtualenv 사용법을 확실히 알자.

gitignore 에 포함할 것들

팀 전체가 공유하는 프로젝트 github repository 에 가상환경 전체가 올라가 버린다면 참으로 비효율적일 것이다. 그래서 사용하는 것이 최소한의 정보만 기록된 requirements.txt 나 Pipfile, Pipfile.lock 인 것이다. pipenv 는 전혀 다른 공간에 가상환경을 생성하므로 상관 없지만, virtualenv 를 사용한다면 .gitignorevenv 혹은 가상환경 디렉토리명을 추가하자.

끝~!



아 그리고 혹시라도 결정론적 빌드가 무엇인지 궁금하다면 링크를 따라가 문서를 읽어보자. 짧게 설명하자면, 최신 버전의 특정 패키지가 현존하는 프로젝트 의존성을 파괴할지도 모르는 상황 속에서, 언제 어디서나 같은 의존성을 보장하는 재현 가능한 빌드를 상상해보면 된다. 결정론적 빌드 시스템!

“Be able to get the exact same set of dependencies on multiple machines”, Using locked packages

진짜끝!!