![[파이썬 20] 파이썬 패키지 관리, pip와 가상환경 개념 정리](https://img.thenullpage.com/posts/5399/5399_1_4696b6.webp)
시리즈를 마무리하며 지금까지 배운 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, 이 네 단계만 기억하면 프로젝트 환경 관리는 대부분 해결된다.