pip과 가상환경으로 Python 패키지 관리하기
이 토픽을 마치면
pip으로 패키지를 설치하고, 가상환경(venv)으로 프로젝트별 환경을 분리하고, requirements.txt로 환경을 재현할 수 있습니다.
패키지가 필요한 이유
Python 기본 기능만으로도 많은 것을 할 수 있지만, 바이오 데이터 분석에서 자주 필요한 기능들은 다른 개발자들이 이미 만들어 두었습니다:
| 하고 싶은 일 | 패키지 | 비유 |
|---|---|---|
| 표 형태 데이터 처리 | pandas | 엑셀의 Python 버전 |
| 그래프 그리기 | matplotlib | 논문 Figure 생성기 |
| 수학/통계 연산 | numpy, scipy | 통계 소프트웨어 |
| DNA/단백질 분석 | biopython | 서열 분석 도구 모음 |
| HTTP 요청 | requests | NCBI API 호출용 |
시약을 매번 직접 합성하지 않고 카탈로그에서 주문하듯, 패키지도 직접 만들지 않고 pip으로 설치합니다.
pip: 패키지 설치
pip은 Python의 패키지 관리자입니다. 터미널에서 실행합니다:
# 패키지 설치pip install pandas
# 특정 버전 설치pip install pandas==2.2.0
# 여러 패키지 한번에 설치pip install numpy matplotlib scipy
# 설치된 패키지 목록 확인pip list
# 패키지 제거pip uninstall pandasGoogle Colab에서는 셀 맨 앞에 !를 붙여서 실행합니다: !pip install biopython
import: 설치한 패키지 사용하기
설치한 패키지는 import로 코드에서 불러옵니다:
import numpy as npimport pandas as pdimport matplotlib.pyplot as plt
data = np.array([1.2, 3.5, 2.8, 4.1, 3.9])mean_val = np.mean(data)print(f"평균 OD값: {mean_val:.2f}")
assert abs(mean_val - 3.1) < 0.01as np는 별칭(alias)입니다. numpy.mean() 대신 np.mean()으로 짧게 쓸 수 있습니다. np, pd, plt는 전 세계 개발자가 쓰는 관례적 별칭입니다.
가상환경이 필요한 이유
프로젝트 A에서는 pandas 1.5가 필요하고, 프로젝트 B에서는 pandas 2.2가 필요하다면? 하나의 Python에 두 버전을 동시에 설치할 수 없습니다.
실험실 비유 — 실험마다 사용하는 시약 세트가 다릅니다. Western Blot 시약과 ELISA 시약을 같은 시약장에 두면 혼동이 생깁니다. 실험별로 시약장을 분리하면 깔끔합니다.
가상환경 = 프로젝트별 시약장
venv: 가상환경 만들기
Python 기본 내장 모듈 venv를 사용합니다:
# 1. 가상환경 생성 (프로젝트 폴더 안에서)python3 -m venv .venv
# 2. 가상환경 활성화# Mac/Linux:source .venv/bin/activate# Windows:.venv\Scripts\activate
# 3. 활성화 확인 — 프롬프트 앞에 (.venv)가 붙음(.venv) $ which python# → /프로젝트경로/.venv/bin/python
# 4. 이 환경에 패키지 설치pip install pandas numpy matplotlib
# 5. 비활성화 (다른 프로젝트로 이동할 때)deactivate활성화 상태에서 pip install하면, 해당 가상환경에만 패키지가 설치됩니다. 다른 프로젝트에는 영향이 없습니다.
requirements.txt: 환경 재현
"내 컴퓨터에서는 되는데 동료 컴퓨터에서는 안 된다" — 개발에서 가장 흔한 문제입니다. requirements.txt는 이 문제를 해결합니다.
# 현재 환경의 패키지 목록을 파일로 저장pip freeze > requirements.txt생성된 requirements.txt:
numpy==1.26.4
pandas==2.2.0
matplotlib==3.8.3
scipy==1.12.0동료가 이 파일을 받으면:
# 가상환경 만들고 활성화 후pip install -r requirements.txt한 줄로 동일한 패키지 환경이 재현됩니다. 실험 프로토콜에 시약 카탈로그 번호를 적어두는 것과 같은 원리입니다. 재현성의 핵심입니다.
conda: 과학 연구용 패키지 관리자
conda는 pip과 비슷하지만, Python 패키지뿐 아니라 C 라이브러리, R 패키지까지 관리할 수 있습니다. 바이오인포매틱스에서는 conda가 더 많이 쓰입니다:
# conda 환경 생성conda create -n bioanalysis python=3.12
# 환경 활성화conda activate bioanalysis
# 패키지 설치 (bioconda 채널)conda install -c bioconda biopython samtools
# 환경 목록 확인conda env list
# 환경 내보내기 (재현용)conda env export > environment.yml| pip + venv | conda | |
|---|---|---|
| 설치 대상 | Python 패키지만 | Python + C/R + 바이너리 도구 |
| 환경 관리 | 별도 (venv) | 통합 (conda create) |
| 바이오 도구 | 제한적 | bioconda 채널로 풍부 |
| 용량 | 가벼움 | 무거움 (Miniconda 추천) |
| 추천 상황 | 웹 개발, 가벼운 분석 | 바이오인포, 대규모 분석 |
처음에는 pip + venv로 시작하고, samtools나 BLAST 같은 바이오 도구가 필요하면 conda로 전환하세요.
직접 해보기 (Faded Example)
아래 빈칸을 채워 가상환경을 만들고 패키지를 설치하는 명령을 완성하세요.
# 가상환경 생성python3 -m .venv# 활성화 (Mac/Linux).venv/bin/activate# 패키지 설치pip pandas numpy# 현재 환경 저장pip freeze > .txt
흔한 에러 & 해결법
Q: ModuleNotFoundError: No module named 'pandas' 에러가 납니다
패키지가 설치되지 않았거나, 다른 Python 환경에 설치되어 있습니다. which python으로 현재 어떤 Python을 쓰고 있는지 확인하세요. 가상환경을 활성화했는지도 확인하세요.
Q: pip install 했는데 import가 안 됩니다
터미널의 pip과 Jupyter Notebook의 Python이 서로 다른 환경일 수 있습니다. Jupyter에서는 셀에 !pip install pandas를 실행한 후 커널을 재시작하세요.
Q: pip과 pip3의 차이가 뭔가요?
pip은 기본 Python용, pip3은 Python 3 전용입니다. 시스템에 Python 2와 3이 모두 설치된 경우 구분이 필요합니다. 가상환경 안에서는 항상 pip이 해당 환경의 Python과 연결되므로 구분할 필요가 없습니다.
Q: .venv 폴더를 Git에 올려도 되나요?
올리면 안 됩니다. .venv는 수백 MB에 달하는 패키지 바이너리가 들어있습니다. .gitignore에 .venv/를 추가하고, requirements.txt만 Git에 올리세요. 동료는 requirements.txt로 자기 환경을 만들면 됩니다.