본문 바로가기
C.W.K.
Stream
Lesson 05 of 05 · published

pip을 올바르게 쓰는 법

~9 min · pip, wisdom, production

Level 0입문자
0 XP0/55 lessons0/16 achievements
0/80 XP to next level80 XP to go0% complete

pip은 이 퀘스트에서 가장 널리 쓰이면서 가장 자주 잘못 쓰이는 도구야. 아래 원칙이 안정적인 Python 환경을 운영하는 사람과 매일 환경 문제에 시달리는 사람을 갈라.

항상 virtual environment를 쓰고 sudo pip은 사용하지 마. 전역 설치는 시스템 Python 라이브러리와 프로젝트 패키지를 섞어 둘 다 깨뜨릴 수 있어. 일반적인 Python 프로젝트라면 각자 격리된 환경을 가져야 해.

virtualenv 대신 python3 -m venv를 써. 표준 라이브러리의 venv가 내장되어 있고 대부분의 용도에 충분해. 서드파티 virtualenv는 대다수 사용자에게 필요 없는 기능을 더한 Python 2 시대의 흔적이야.

pip을 유지하면서 재현성이 필요하면 pip-tools를 써. pip-compile은 작은 requirements.in을 모든 버전이 고정된 requirements.txt로 바꿔. 엄격한 재현성이 필요하지만 아직 uv로 옮길 수 없는 프로젝트에 알맞아.

새 Python 프로젝트에는 uv를 검토해. uv는 10~100배 빠르고 진짜 lockfile을 제공하며 Python 버전 관리까지 맡아. pip, venv, pip-tools, pyenv, pipx의 역할을 실행 파일 하나로 합친 도구로 다음 트랙에서 자세히 다뤄.

macOS의 PEP 668을 존중해. 최신 macOS Python은 시스템 도구가 깨지는 것을 막으려고 전역 pip 설치를 제한해. 'externally-managed-environment' 오류가 나오면 venv를 써야 해. --break-system-packages는 올바른 해결책이 아니야.

Code

PEP 668의 externally-managed 오류·bash
# 증상
pip install requests
# error: externally-managed-environment
#
# This environment is externally managed
# To install Python packages system-wide, try ...

# 옳은 fix: venv 사용
python3 -m venv .venv
source .venv/bin/activate
pip install requests

# 잘못된 fix: --break-system-packages 로 우회
# 하지 마. flag 이름 그대로.
direnv로 venv 자동 활성화·bash
# direnv install
brew install direnv

# ~/.zprofile 에 hook 추가
echo 'eval "$(direnv hook zsh)"' >> ~/.zprofile

# 프로젝트 root 에 .envrc 만들기
echo 'source .venv/bin/activate' > .envrc
direnv allow

# 이제: 프로젝트로 cd 하면 venv 자동 활성화.
# cd 나가면 venv 자동 비활성화.

External links

Exercise

direnv를 설치해 셸에 연결하고, 일반적인 Python 프로젝트 하나에서 디렉터리에 들어갈 때 venv가 자동 활성화되도록 설정해 봐. 처음으로 별도 명령 없이 환경이 켜지는 경험을 하면 이후 프로젝트에서도 자동 활성화를 챙기게 될 거야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.