Python 표준 배포판에는 기본으로 포함된 모듈과 패키지 외에도, 수많은 서드파티 개발자들이 만든 패키지가 PyPI(Python Package Index, https://pypi.org)라는 공식 패키지 저장소에 업로드되어 있습니다. 이곳에서 패키지를 설치하려면 pip 유틸리티가 필요합니다. pip는 독립적인 프로젝트이지만, Python 3.4부터는 별도 설치 없이 바로 사용할 수 있도록 Python 배포판에 부트스트랩(기본 탑재)되어 제공됩니다.
ensurepip 모듈이란?
ensurepip 모듈은 기존 Python 설치 환경에 pip를 부트스트랩하는 기능을 지원합니다. 일반적인 상황에서는 사용자가 이 모듈을 직접 호출할 필요가 없지만, 일반 설치나 가상 환경 생성 시 pip 설치를 건너뛴 경우에는 유용하게 사용할 수 있습니다.
pip 없이 가상 환경 생성하기
다음 명령을 실행하면 pip 유틸리티가 설치되지 않은 가상 환경이 생성됩니다.
C:\python37>python -m venv --without-pip e:\testenv
이렇게 생성된 가상 환경 디렉터리의 scripts 폴더에는 pip 유틸리티가 포함되어 있지 않습니다. 이때 ensurepip 모듈을 사용하면 시스템 전역 설치에 포함된 버전의 pip를 가상 환경에 통합할 수 있습니다. 최신 버전을 설치하려면 --upgrade 옵션을 함께 지정하면 됩니다.
E:\testenv>scripts\python -m ensurepip --upgrade Looking in links: C:\Users\acer\AppData\Local\Temp\tmpp1bb2lym Collecting setuptools Collecting pip Installing collected packages: setuptools, pip Successfully installed pip-18.1 setuptools-40.6.2
pip 설치 동작을 변경하는 옵션
ensurepip의 기본 설치 동작은 아래 옵션들을 통해 조정할 수 있습니다.
- --root <dir> : 현재 활성화된 가상 환경의 루트(있다면)나 현재 Python 설치의 기본 루트 대신, 지정한 루트 디렉터리를 기준으로 pip를 설치합니다.
- --user : 현재 Python 설치 전역이 아닌, 사용자 사이트 패키지(user site-packages) 디렉터리에 pip를 설치합니다. 단, 이 옵션은 활성화된 가상 환경 내에서는 사용할 수 없습니다.
ensurepip 모듈의 주요 함수
- ensurepip.version() : 환경을 부트스트랩할 때 설치되는 번들된 pip의 버전을 문자열로 반환합니다.
- ensurepip.bootstrap() : 현재 환경 또는 지정된 환경에 pip를 부트스트랩합니다.
주의사항
부트스트랩 과정은 sys.path와 os.environ에 부작용(side effect)을 일으킬 수 있습니다. 또한 부트스트랩 과정에서 pip 실행에 필요한 추가 모듈들이 함께 설치될 수 있지만, 다른 소프트웨어는 이러한 의존성이 항상 기본적으로 존재한다고 가정해서는 안 됩니다.