WIKIpip
플레이북

pip

파이썬을 깔아주는 명령이 아니다.

pip파이썬패키지 관리PyPI백엔드 기초
패키지 관리파이썬 입문자4분

한눈에

  • pip = Pip Installs Packages — 파이썬에 딸려오는 패키지 설치 도구 (npm 자리)
  • pip는 파이썬을 설치하는 게 아니다 — 이미 있는 파이썬 안에 패키지를 채운다
  • pip install = PyPI(중앙 저장소)서 다운로드 → 의존성 자동 해결 → site-packages에 배치
  • 표준 라이브러리(os·json·datetime)는 pip 없이 그냥 import — pip는 외부(PyPI) 서드파티용
  • git pull = 아는 원격서 소스 동기화 / pip install = 레지스트리서 패키지+의존성 트리 받기(=npm install)

pip install requests 같은 걸 처음 보면 "파이썬을 설치하는 명령인가?" 싶다. 정반대다. pip는 이미 깔려 있는 파이썬 위에서 도는 도구고, 하는 일은 파이썬을 까는 게 아니라 그 파이썬 안에 남이 만든 패키지를 채워 넣는 것이다. 파이썬을 설치하면 (3.4 버전부터는) pip가 알아서 딸려온다. 자리로 보면 Node 세계의 npm과 정확히 같다.

이름부터, Pip Installs Packages

pip는 "Pip Installs Packages"의 약자다. 풀어쓴 첫 글자가 다시 자기 이름(Pip)이라, 끝없이 자기를 부르는 재귀 약자다. GNU 쪽에서 즐기던 네이밍 장난인데, 뜻만 보면 이름이 곧 정의다 — "pip는 패키지를 설치한다". 초기엔 pyinstall이라는 이름이었다가 2008년에 지금의 pip로 바뀌었다.

핵심은 이름 그대로 **패키지(Packages)**를 다룬다는 것이지, 파이썬(Python) 자체를 다루는 게 아니라는 점이다. 이 한 글자 차이가 처음에 제일 헷갈리는 지점이다.

pip install이 실제로 하는 일

pip install 패키지명 한 줄 뒤에서 세 가지 일이 순서대로 일어난다.

PyPI에서 다운로드
pypi.org — 파이썬 패키지들의 중앙 저장소
의존성 자동 해결
그 패키지가 필요로 하는 다른 패키지까지 알아서 함께
빌드 · 설치
site-packages 폴더에 배치 → 이제 import 가능

여기서 놓치기 쉬운 게 가운데 단계다. requests 하나를 깔라고 했는데 다른 패키지 여러 개가 같이 깔리는 걸 보게 된다 — requests가 내부적으로 쓰는 것들을 pip가 의존성 트리를 따라 알아서 끌어오기 때문이다. Node에서 npm install express 했을 때 node_modules가 통째로 부풀어 오르는 것과 같은 그림이다.

헷갈리기 쉬운 두 가지

하나. 모든 import에 pip가 필요한 건 아니다. import os, import json, import datetime은 pip로 뭘 깐 적이 없어도 그냥 된다. 이것들은 파이썬에 처음부터 들어 있는 표준 라이브러리라서다. pip가 데려오는 건 어디까지나 표준에 없는 외부(PyPI) 서드파티 패키지다. 즉 "import가 안 되면 무조건 pip install"이 아니라, "표준에 없는 걸 쓸 때만 pip"가 정확하다.

둘. git pullpip install은 비슷해 보여도 다른 일이다. 둘 다 "밖에서 뭔가를 받아온다"는 느낌이라 섞이는데, 결이 다르다.

git pull — 내가 이미 아는 특정 원격 저장소 하나에서 소스 코드를 동기화. "그 레포"를 콕 집는다
pip install — 이름만 주면 PyPI라는 공용 레지스트리에서 그 패키지와 딸린 의존성 트리까지 찾아 환경에 설치. "부품 이름"만 안다
대응 관계 — pip install ≒ npm install. 레지스트리에서 부품을 받아 프로젝트 환경에 꽂는 역할이 같다

우리 프로젝트에선

파이썬을 쓰는 곳마다 pip가 바탕에 깔려 있다. 새김 AI 백엔드(FastAPI)와 새김 Eval 둘 다 파이썬이라, 라이브러리를 하나 붙일 때마다 결국 pip로 의존성을 채운다. FastAPI, 임베딩·LLM 클라이언트, 평가용 유틸 — 코드에서 import 한 줄로 부르는 것들 대부분이 pip가 PyPI에서 끌어와 준 서드파티다.

그래서 나한테 pip는 "파이썬 배우기"보다 **"파이썬 프로젝트를 굴리는 물류"**로 먼저 다가왔다. 새 기능을 붙일 때 제일 먼저 하는 게 "이거 되는 패키지가 PyPI에 있나" 찾아서 pip로 깔아보는 일이라, 코드보다 pip를 먼저 친다.

더 읽기

pip를 손에 익히고 싶을 때, 명령어와 개념을 같이 잡아주는 글들.