pip
파이썬을 깔아주는 명령이 아니다.
한눈에
- 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 패키지명 한 줄 뒤에서 세 가지 일이 순서대로 일어난다.
여기서 놓치기 쉬운 게 가운데 단계다. 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 pull과 pip install은 비슷해 보여도 다른 일이다. 둘 다 "밖에서 뭔가를 받아온다"는 느낌이라 섞이는데, 결이 다르다.
우리 프로젝트에선
파이썬을 쓰는 곳마다 pip가 바탕에 깔려 있다. 새김 AI 백엔드(FastAPI)와 새김 Eval 둘 다 파이썬이라, 라이브러리를 하나 붙일 때마다 결국 pip로 의존성을 채운다. FastAPI, 임베딩·LLM 클라이언트, 평가용 유틸 — 코드에서 import 한 줄로 부르는 것들 대부분이 pip가 PyPI에서 끌어와 준 서드파티다.
그래서 나한테 pip는 "파이썬 배우기"보다 **"파이썬 프로젝트를 굴리는 물류"**로 먼저 다가왔다. 새 기능을 붙일 때 제일 먼저 하는 게 "이거 되는 패키지가 PyPI에 있나" 찾아서 pip로 깔아보는 일이라, 코드보다 pip를 먼저 친다.
더 읽기
pip를 손에 익히고 싶을 때, 명령어와 개념을 같이 잡아주는 글들.
- 파이썬의 패키지 매니저 pip 사용법 — Dale Seo — 설치·업데이트·제거까지 초보 눈높이로 명령어 예시와 함께
- 파이썬 pip 사용법: 패키지 설치와 PyPI 완벽 정리 — Coddy — PyPI·requirements.txt·가상환경까지 한 흐름으로
- pip (패키지 관리자) — 위키백과 — 정의와 역사를 한눈에 정리한 레퍼런스