ensurepip — pip 설치 프로그램 부트스트래핑

ensurepip — pip 설치 프로그램 부트스트래핑

버전 3.4에 추가됨.

ensurepip 패키지는 기존 Python 설치 또는 가상 환경에 pip 설치 프로그램을 부트스트래핑하는 기능을 제공해요. 이런 부트스트래핑 방식은 pip가 각자 자신의 릴리스 주기를 가진 독립 프로젝트이고, 최신 안정 버전이 CPython 레퍼런스 인터프리터의 유지보수·기능 릴리스에 번들로 들어간다는 사실을 반영한 거예요.

출처: Python 표준 라이브러리

본문

대부분의 경우 Python 최종 사용자가 이 모듈을 직접 호출할 필요는 없어요(pip는 기본적으로 부트스트래핑되니까요). 다만 Python 설치 때(또는 가상 환경 생성 때) pip 설치를 건너뛰었거나, pip를 명시적으로 제거한 뒤라면 필요할 수 있어요.

참고 — 이 모듈은 인터넷에 접근하지 않아요. pip를 부트스트래핑하는 데 필요한 모든 구성 요소가 패키지 내부에 포함돼 있어요.

이 모듈은 선택 모듈이에요. 만약 여러분의 CPython 사본에서 빠져 있다면, 배포자(여러분에게 Python을 제공한 쪽)의 문서를 찾아보세요. 여러분이 배포자라면 선택 모듈 요구 사항을 참고하세요.

가용성: Android, iOS, WASI가 아님. 이 모듈은 모바일 플랫폼이나 WebAssembly 플랫폼에서는 지원되지 않아요.

명령줄 인터페이스

명령줄 인터페이스는 인터프리터의 -m 스위치로 호출해요. 가장 단순한 호출은 이렇게 돼요.

python -m ensurepip

이 호출은 아직 pip가 설치돼 있지 않으면 설치하고, 이미 있으면 아무것도 하지 않아요. 설치된 pip 버전이 ensurepip에 있는 버전만큼 최신인지 확인하려면 --upgrade 옵션을 전달하면 돼요.

python -m ensurepip --upgrade

기본적으로 pip는 현재 활성화된 가상 환경(있으면) 또는 시스템 site-packages(활성 가상 환경이 없으면)에 설치돼요. 설치 위치는 두 가지 추가 명령줄 옵션으로 제어할 수 있어요.

  • --root <dir> — 현재 활성 가상 환경(있으면)이나 현재 Python 설치의 기본 루트 대신, 주어진 루트 디렉터리를 기준으로 pip를 설치해요.
  • --user — 현재 Python 설치에 전역으로 설치하는 대신 사용자 site-packages 디렉터리에 pip를 설치해요(활성 가상 환경 안에서는 허용되지 않아요).

기본적으로 pipXpipX.Y 스크립트가 설치되는데(X.Yensurepip를 호출하는 데 쓴 Python 버전), 설치되는 스크립트도 두 가지 옵션으로 제어할 수 있어요.

  • --altinstall — 대체 설치를 요청하면 pipX 스크립트가 설치되지 않아요.
  • --default-pip — "기본 pip" 설치를 요청하면 두 개의 일반 스크립트에 더해 pip 스크립트도 설치돼요.

스크립트 선택 옵션을 둘 다 주면 예외가 발생해요.

모듈 API

ensurepip는 프로그래밍 방식 사용을 위해 두 함수를 제공해요.

ensurepip.version()

환경을 부트스트래핑할 때 설치될 pip의 사용 가능한 버전을 지정하는 문자열을 돌려줘요.

ensurepip.bootstrap(root=None, upgrade=False, user=False, altinstall=False, default_pip=False, verbosity=0)

현재 또는 지정된 환경에 pip를 부트스트래핑해요.

  • root는 설치 기준이 되는 대체 루트 디렉터리를 지정해요. rootNone이면 현재 환경의 기본 설치 위치를 사용해요.
  • upgrade는 이미 설치된 이전 버전 pip를 사용 가능한 버전으로 업그레이드할지 여부를 나타내요.
  • user는 전역 대신 사용자 스킴을 사용할지 여부를 나타내요.

기본적으로 pipXpipX.Y 스크립트가 설치돼요(X.Y는 현재 Python 버전). altinstall이 설정되면 pipX가 설치되지 않고, default_pip가 설정되면 두 개의 일반 스크립트에 더해 pip가 설치돼요. altinstalldefault_pip를 둘 다 설정하면 ValueError가 발생해요.

verbosity는 부트스트래핑 연산에서 sys.stdout에 출력되는 수준을 제어해요.

인자 root와 함께 감사 이벤트 ensurepip.bootstrap을 발생시켜요.

참고 — 부트스트래핑 과정은 sys.pathos.environ 양쪽에 부수 효과가 있어요. 대신 명령줄 인터페이스를 서브프로세스에서 호출하면 이런 부수 효과를 피할 수 있어요.

참고 — 부트스트래핑 과정은 pip가 요구하는 추가 모듈을 설치할 수 있지만, 다른 소프트웨어는 그런 의존성이 항상 기본으로 존재한다고 가정하면 안 돼요(그 의존성은 미래 pip 버전에서 제거될 수 있으니까요).

더 알아보기

  • Python 모듈 설치하기 — Python 패키지 설치를 위한 최종 사용자 가이드.
  • PEP 453: Python 설치에서 pip의 명시적 부트스트래핑 — 이 모듈의 원래 근거와 명세.