파이썬 프로젝트를 진행하다 보면 프로젝트마다 필요한 패키지와 버전이 달라지는 경우가 생깁니다.
가상환경은 이런 충돌을 방지하기 위해 프로젝트별로 독립된 파이썬 실행 환경을 만드는 방법입니다.
앞선 환경 세팅 글에서 개념은 간략하게 다뤘으므로, 이번 글에서는 실제 사용 흐름과 패키지 관리를 더 구체적으로 정리합니다.
왜 가상환경이 필요한가
파이썬 패키지를 가상환경 없이 설치하면 시스템 전역에 설치됩니다.
이 경우 다음과 같은 문제가 생길 수 있습니다.
- 프로젝트 A는 numpy 1.23을 요구하고, 프로젝트 B는 numpy 1.26을 요구할 때 하나의 버전만 설치할 수 있어 충돌이 발생합니다.
- 분석 도구마다 요구하는 파이썬 버전이 다른 경우에도 같은 문제가 생깁니다.
- 시스템 전역 파이썬 환경을 잘못 건드리면 운영체제 기능에 영향을 줄 수 있습니다.
가상환경을 사용하면 프로젝트마다 완전히 독립된 패키지 공간을 갖게 되어 이런 문제를 피할 수 있습니다.
venv로 가상환경 관리
venv는 파이썬 표준 라이브러리에 포함된 가상환경 모듈입니다. 별도 설치 없이 사용할 수 있습니다.
가상환경 생성
python -m venv myenv
현재 디렉토리에 myenv라는 디렉토리가 생성되며, 그 안에 독립된 파이썬 실행 파일과 패키지 설치 공간이 만들어집니다.
가상환경 활성화 및 비활성화
source myenv/bin/activate # 활성화 (리눅스/macOS)
deactivate # 비활성화
활성화하면 프롬프트 앞에 환경 이름이 표시됩니다.
(myenv) user@server:~$
가상환경 삭제
가상환경 디렉토리를 삭제하면 됩니다.
rm -rf myenv
현재 파이썬 경로 확인
which python
# /home/user/myenv/bin/python
가상환경이 활성화된 상태에서 which python을 실행하면 가상환경 안의 파이썬 경로가 출력됩니다. 의도하지 않은 환경이 활성화되어 있는지 확인할 때 유용합니다.
conda 가상환경과 venv의 차이
| 항목 | venv | conda |
| 설치 필요 여부 | 파이썬 내장, 별도 설치 불필요 | 별도 설치 필요 |
| 파이썬 버전 관리 | 불가 (시스템 파이썬 버전 그대로 사용) | 환경마다 다른 버전 지정 가능 |
| 패키지 설치 | pip | conda 또는 pip 모두 사용 가능 |
| 비파이썬 의존성 | 관리 불가 | 관리 가능 (C 라이브러리 등) |
| 주로 사용하는 경우 | 간단한 파이썬 프로젝트 | 생물정보학, 데이터 분석 등 복잡한 의존성 |
파이썬 버전을 환경마다 다르게 설정해야 하거나, 비파이썬 의존성(예: htslib, samtools 등 C 기반 라이브러리)이 필요한 경우에는 conda가 더 적합합니다. 순수 파이썬 프로젝트라면 venv로도 충분합니다.
pip 패키지 관리
pip은 파이썬 패키지 인덱스(PyPI)에서 패키지를 설치하고 관리하는 도구입니다.
기본 명령어
pip install numpy # 최신 버전 설치
pip install numpy==1.24.0 # 특정 버전 설치
pip install "numpy>=1.23,<1.26" # 버전 범위 지정 설치
pip install --upgrade numpy # 최신 버전으로 업그레이드
pip uninstall numpy # 패키지 삭제
설치된 패키지 확인
pip list # 설치된 패키지 전체 목록
pip show numpy # 특정 패키지의 상세 정보
pip show numpy | grep -i version # 버전만 확인
pip show는 패키지의 버전, 설치 경로, 의존성 정보를 출력합니다. 패키지 간 의존성 문제를 파악할 때 유용합니다.
의존성 충돌 확인
pip check
현재 환경에 설치된 패키지 간 의존성 충돌이 있는지 확인합니다. 충돌이 없으면 No broken requirements found.를 출력합니다.
requirements.txt로 환경 재현하기
requirements.txt는 프로젝트에 필요한 패키지 목록을 기록한 파일입니다.
이 파일을 공유하면 다른 환경에서도 동일한 패키지 구성을 재현할 수 있습니다.
현재 환경을 파일로 저장
pip freeze > requirements.txt
pip freeze는 현재 환경에 설치된 모든 패키지와 정확한 버전을 출력합니다.
# requirements.txt 예시
numpy==1.24.0
pandas==2.0.1
matplotlib==3.7.1
biopython==1.81
파일로 패키지 일괄 설치
pip install -r requirements.txt
새 환경을 만든 뒤 이 명령을 실행하면 동일한 패키지 구성을 바로 재현할 수 있습니다.
직접 작성하는 경우
pip freeze는 의존성 패키지까지 모두 포함해서 버전을 고정하기 때문에 파일이 길어질 수 있습니다. 프로젝트에서 직접 사용하는 패키지만 버전 범위로 명시하는 방식으로 직접 작성하기도 합니다.
numpy>=1.23
pandas>=1.5
matplotlib>=3.6
biopython
프로젝트별 환경 관리 권장 흐름
실제 프로젝트에서 환경을 구성할 때 권장하는 순서입니다.
# 1. 프로젝트 디렉토리 생성
mkdir my_project && cd my_project
# 2. 가상환경 생성 및 활성화
python -m venv .venv
source .venv/bin/activate
# 3. 필요한 패키지 설치
pip install numpy pandas matplotlib
# 4. requirements.txt 저장
pip freeze > requirements.txt
# 5. .gitignore에 가상환경 디렉토리 추가 (git 사용 시)
echo ".venv/" >> .gitignore
가상환경 디렉토리(.venv, myenv 등)는 용량이 크고 환경마다 다르게 생성되므로 git으로 추적하지 않는 것이 원칙입니다.
대신 requirements.txt를 저장소에 포함해서 다른 사람이 동일한 환경을 재현할 수 있도록 합니다.
'BI&Programming-Tools > Python' 카테고리의 다른 글
| [파이썬 기초] 딕셔너리, 셋, 불리언 (0) | 2026.06.15 |
|---|---|
| [파이썬 기초] 리스트와 튜플 (0) | 2026.06.15 |
| [파이썬 기초] 숫자와 문자열 다루기 (0) | 2026.06.15 |
| [파이썬 기초] 변수, 동적 타이핑, 자료형 개요 (0) | 2026.06.15 |
| [파이썬 기초] 파이썬을 쓰는 이유와 환경 세팅 (0) | 2026.06.15 |
