[파이썬 기초] 가상환경과 pip 패키지 관리

2026. 6. 15. 06:00·BI&Programming-Tools/Python

파이썬 프로젝트를 진행하다 보면 프로젝트마다 필요한 패키지와 버전이 달라지는 경우가 생깁니다.

가상환경은 이런 충돌을 방지하기 위해 프로젝트별로 독립된 파이썬 실행 환경을 만드는 방법입니다.

앞선 환경 세팅 글에서 개념은 간략하게 다뤘으므로, 이번 글에서는 실제 사용 흐름과 패키지 관리를 더 구체적으로 정리합니다.


왜 가상환경이 필요한가

파이썬 패키지를 가상환경 없이 설치하면 시스템 전역에 설치됩니다.

이 경우 다음과 같은 문제가 생길 수 있습니다.

  • 프로젝트 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
'BI&Programming-Tools/Python' 카테고리의 다른 글
  • [파이썬 기초] 리스트와 튜플
  • [파이썬 기초] 숫자와 문자열 다루기
  • [파이썬 기초] 변수, 동적 타이핑, 자료형 개요
  • [파이썬 기초] 파이썬을 쓰는 이유와 환경 세팅
데이터로 읽는 생명
데이터로 읽는 생명
is-note 님의 블로그 입니다.
  • 데이터로 읽는 생명
    In Silico Note
    데이터로 읽는 생명
  • 전체
    오늘
    어제
    • 분류 전체보기 (190)
      • Bio-Knowledge (16)
        • 분자생물학 & 유전학 기초 (0)
        • 전사체학 & 유전자 발현 (0)
        • 구조생물학 & 단백질 (0)
        • 싱글셀 & 다중오믹스 (0)
        • 임상유전학 & 질환 데이터 (0)
      • Programming (4)
        • API (4)
      • BI&Programming-Tools (111)
        • File Formats (14)
        • Linux & Bash Script (38)
        • Python (35)
        • R (11)
        • 통계 (8)
        • Pipeline Manager (0)
        • Etc (5)
      • Bio Data Analysis (28)
        • 서열분석개론 (6)
        • WGS(Whole Genome Seq) (11)
        • WES(Whole Exome Seq) (2)
        • RNA-Seq (4)
        • Metagenome (2)
        • Non-human Resequencing (1)
        • 임상유전체 분석 (1)
        • Multi-Omics (1)
      • Bio-Trends & Tech (1)
      • 코딩테스트 연습 (30)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    리눅스
    ngs
    코딩테스트
    wgs
    fasta
    데이터분석
    유전체분석
    파일포맷
    GATK
    분자생물학
    생물정보학
    R기초
    리눅스기초
    bioinformatics
    통계
    파이썬기초
    R
    파이썬연습
    FASTQ
    파이썬
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
데이터로 읽는 생명
[파이썬 기초] 가상환경과 pip 패키지 관리
상단으로

티스토리툴바