[python] Pipenv를 사용하여 패키지 버전 관리하기

파이썬으로 개발을 하다보면 다양한 패키지를 사용해야 할 때가 많습니다. 그리고 각 패키지는 버전이 존재하고, 버전에 따라서 동작하는 방식이 다를 수 있습니다. 이러한 패키지 버전 관리를 효과적으로 할 수 있는 도구 중 하나가 Pipenv입니다.

Pipenv란?

Pipenv는 파이썬의 패키지들을 관리하고 가상환경을 구축해주는 패키지 관리 도구입니다. Pipenv를 사용하면 각 프로젝트별로 패키지들을 독립적으로 관리할 수 있고, 패키지 의존성을 자동으로 해결해줍니다.

Pipenv 설치하기

Pipenvpip로 간단하게 설치할 수 있습니다. 터미널에서 다음 명령을 실행해주세요:

$ pip install pipenv

Pipfile과 Pipfile.lock

Pipenv를 사용하면 프로젝트 루트 디렉토리에 Pipfile이라는 파일이 생성됩니다. 이 파일에는 프로젝트에 필요한 패키지들의 목록과 버전 정보가 기록됩니다.

[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
requests = "*"
numpy = "==1.18.0"
django = {git = "https://github.com/django/django.git", ref = "1.11.x"}

[dev-packages]
pytest = "*"

Pipfile에는 대괄호로 묶여있는 [packages] 세션과 [dev-packages] 세션으로 나뉘어져 있습니다. [packages] 세션에는 프로덕션에 필요한 패키지들이, [dev-packages] 세션에는 개발에 필요한 패키지들이 기록됩니다.

Pipfile이 설치한 패키지 정보를 기반으로 Pipfile.lock이라는 파일을 생성합니다. 이 파일에는 각 패키지의 정확한 버전 정보와 의존성 그래프가 기록됩니다. 이 파일을 통해 프로젝트에 정확한 환경을 재현할 수 있습니다.

패키지 설치 및 버전 관리

Pipenv를 통해 패키지를 설치하면, Pipfile에 기록되고 Pipfile.lock에 의존성 그래프가 업데이트됩니다.

$ pipenv install requests

위의 명령을 실행하면 Pipfilerequests 패키지가 추가되며, Pipfile.lock에도 기록됩니다.

패키지를 설치할 때 특정 버전을 지정하고 싶다면, 다음과 같이 명령을 실행합니다:

$ pipenv install django==2.0.0

== 뒤에 원하는 버전을 명시하면 해당 버전으로 패키지가 설치됩니다.

패키지 의존성 관리하기

Pipenv를 사용하면 패키지 의존성을 자동으로 해결해줍니다. 즉, 프로젝트의 다른 패키지들과의 의존성 충돌을 방지해줍니다.

$ pipenv install

위의 명령을 통해 Pipfile.lock에 기록된 패키지들을 모두 설치할 수 있습니다.

가상환경 사용하기

Pipenv는 패키지를 설치할 때 해당 프로젝트에 독립적인 가상환경을 구축합니다. 이 가상환경을 활성화하면 해당 프로젝트에서만 패키지를 사용할 수 있습니다.

$ pipenv shell

위의 명령을 실행하면 가상환경이 활성화되고, 해당 프로젝트의 패키지를 사용할 수 있습니다.

결론

Pipenv를 사용하면 프로젝트별로 패키지를 독립적으로 관리하고 버전을 효과적으로 관리할 수 있습니다. 의존성 충돌을 방지하면서 개발 환경을 관리하는 데에 매우 편리한 도구입니다. 파이썬 프로젝트를 진행할 때는 Pipenv를 사용하여 효과적으로 패키지 관리를 해보세요.

참고 자료