C.W.K.
Stream
Lesson 03 of 05 · published

매일 치는 pip 명령 (venv 와 함께)

~13 min · pip, commands, venv, workflow

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

pip 의 가장 중요한 단일 습관 — 패키지 절대 글로벌하게 install 안 함. 항상 프로젝트 별 virtual environment (venv) 안에서 작업. 가장 많이 칠 4개 명령이 venv 셋업, install, freeze, run.

python3 -m venv .venv.venv 디렉토리에 virtual environment 생성. source .venv/bin/activate 가 활성화 — shell prompt 가 (.venv) 접두, which python 이 venv 안 가리킴. deactivate 가 종료.

venv 안에서: pip install <pkg> venv 에만 패키지 install. pip install -r requirements.txt 가 requirements 파일에서 install. pip install -e . 가 현재 디렉토리의 editable install — 소스 코드 변경이 즉시 반영, Python 패키지 개발의 표준 방식.

pip freeze 가 모든 install 패키지를 name==version 형식으로 출력 — pip 이 lockfile 에 가장 가까이 가는 거. requirements.txt 로 redirect 해서 환경 캡처. pip list 가 깐 패키지를 표 형식으로 표시. pip show <pkg> 가 한 패키지의 버전, install 위치, 의존성, 홈페이지 표시. pip uninstall <pkg> 가 제거 (그치만 이제 orphaned 의존성은 제거 안 함 — 그게 pip 의 dirty-uninstall 문제).

Code

venv-first 워크플로우·bash
# 1. 프로젝트 별 venv
cd my-project
python3 -m venv .venv

# 2. 활성화 (zsh / bash)
source .venv/bin/activate

# 이제 prompt 가 (.venv) 보임; python 과 pip 이 venv 안 가리킴
which python
# /Users/you/my-project/.venv/bin/python

# 3. Install
pip install requests flask

# 4. 상태 캡처
pip freeze > requirements.txt

# 5. 끝나면 deactivate
deactivate
다른 머신에서 재현·bash
# 프로젝트 clone; 팀원 셋업
cd my-project
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

# 이제 같은 패키지 — 그치만 같은 transitive dep 버전은 NOT,
# requirements.txt 가 pip-tools, pip-compile, 또는 uv 같은 진짜
# locking 도구로 생성된 게 아니라면.
라이브러리 개발용 editable install·bash
# Python 패키지 source dir 에서 (pyproject.toml 또는 setup.py 와 함께)
pip install -e .

# 이제 패키지가 이 venv 의 어디에서나 importable,
# 그리고 코드 편집이 즉시 반영 — 재설치 안 필요.
# 라이브러리 개발할 때 표준 워크플로우.

External links

Exercise

scratch 디렉토리 만들고, venv 셋업, 활성화, 세 패키지 install ('pip install requests rich httpx'), 'pip freeze > requirements.txt'. 파일 열어 — pip 이 모든 transitive dep 도 캡처한 거 봐. 그 flat 출력이 requirements.txt 의 가짜-lockfile.

Progress

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

댓글 0

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

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