[파이썬 20] 파이썬 패키지 관리, pip와 가상환경 개념 정리


시리즈를 마무리하며 지금까지 배운 openpyxl, pandas, selenium, pillow 같은 여러 라이브러리를 프로젝트별로 안전하게 관리하는 법을 다룬다. 프로젝트가 늘어날수록 반드시 필요해지는 개념이 pip와 가상환경(virtual environment)이다.


1. 왜 가상환경이 필요한가


기본적으로 파이썬에 설치하는 패키지는 컴퓨터 전체에서 공유되는 하나의 환경에 설치된다. 문제는 프로젝트 A는 pandas 1.0 버전이 필요하고 프로젝트 B는 pandas 2.0 버전이 필요한 경우다. 하나의 환경에 두 버전을 동시에 설치할 수 없기 때문에, 둘 중 하나는 반드시 충돌이 난다. 가상환경은 프로젝트마다 독립된 파이썬 설치 공간을 만들어서, 각 프로젝트가 자신만의 패키지 버전을 갖도록 격리해주는 역할을 한다.


2. 가상환경 만들고 활성화하기


파이썬 3.3 이상부터는 venv라는 모듈이 표준 라이브러리에 기본 포함되어 있어서 별도 설치 없이 바로 쓸 수 있다.


# 가상환경 생성 (venv라는 폴더가 만들어짐)

python -m venv venv


# 활성화, 윈도우

venv\Scripts\activate


# 활성화, 맥/리눅스

source venv/bin/activate


활성화되면 터미널 프롬프트 앞에 (venv)라는 표시가 붙는다. 이 상태에서 설치하는 패키지는 시스템 전체가 아니라 이 가상환경 안에만 설치되며, 프로젝트를 벗어나고 싶을 땐 deactivate 명령어로 빠져나올 수 있다.


3. requirements.txt, 패키지 목록을 문서화하기


가상환경 안에서 설치한 패키지 목록을 파일로 저장해두면, 다른 컴퓨터나 협업하는 동료가 똑같은 환경을 그대로 재현할 수 있다.


# 현재 설치된 패키지 목록을 파일로 저장

pip freeze > requirements.txt


# requirements.txt 내용 예시

pandas==2.1.0

openpyxl==3.1.2

beautifulsoup4==4.12.2

selenium==4.15.0


이 파일을 받은 다른 사람은 다음 명령어 한 줄로 똑같은 버전의 패키지를 한 번에 설치할 수 있다.


pip install -r requirements.txt


이 방식은 "내 컴퓨터에서는 되는데 다른 컴퓨터에서는 안 된다"는 흔한 문제를 예방하는 핵심적인 습관으로 꼽힌다. 프로젝트를 깃허브 같은 곳에 공유할 때도, 가상환경 폴더 자체는 올리지 않고 이 requirements.txt 파일만 포함시키는 것이 일반적인 관례다.


4. 실무 권장 원칙


가상환경을 다루면서 자주 언급되는 몇 가지 원칙이 있다. 가상환경 폴더를 옮기거나 이름을 바꾸지 말고, 필요하면 그냥 삭제하고 requirements.txt로 새로 만드는 게 낫다는 점, 그리고 여러 작은 스크립트를 위해 하나의 거대한 공용 가상환경을 만들기보다는 프로젝트별로 하나씩 분리하는 게 장기적으로 문제를 덜 만든다는 점이 대표적이다. 이 시리즈에서 다룬 여러 라이브러리(pandas, selenium, openpyxl 등)를 실제 프로젝트에 쓸 때도, 프로젝트 폴더마다 가상환경을 새로 만들고 그 안에서 필요한 패키지만 설치하는 습관을 들이는 게 좋다.


5. 정리


가상환경은 프로젝트마다 독립된 패키지 공간을 만들어 버전 충돌을 막아주는 장치이고, requirements.txt는 그 패키지 목록을 문서화해서 다른 사람이나 다른 컴퓨터에서 똑같은 환경을 재현할 수 있게 해주는 파일이다. python -m venv → 활성화 → pip install → pip freeze > requirements.txt, 이 네 단계만 기억하면 프로젝트 환경 관리는 대부분 해결된다.