본문 바로가기

Python

7-5. 가상 환경(Virtual Environment)의 이해와 사용법

파이썬 가상 환경의 이해와 사용법

안녕하세요! 지난 시간에는 파이썬에서 여러 작업을 동시에 처리하는 멀티스레딩(Multithreading)과 멀티프로세싱(Multiprocessing)에 대해 알아보았습니다. 이제 여러분은 프로그램의 효율성을 높이는 방법을 이해하셨을 거예요!

이번 시간에는 파이썬 개발의 필수적인 도구 중 하나인 **가상 환경(Virtual Environment)**에 대해 알아보겠습니다. 가상 환경은 독립적인 파이썬 개발 환경을 구축하여 프로젝트별로 필요한 패키지들을 깔끔하게 관리할 수 있게 해주는 강력한 기능입니다.


Part 1: 가상 환경(Virtual Environment)이란 무엇인가?

**가상 환경(Virtual Environment)**은 특정 파이썬 프로젝트만을 위한 독립적인 파이썬 실행 환경입니다. 파이썬을 설치하면 기본적으로 하나의 전역(Global) 파이썬 환경이 생성됩니다. 이 환경에 모든 패키지를 설치하면 여러 프로젝트를 진행할 때 문제가 발생할 수 있습니다.

가상 환경은 다음과 같은 특징을 가집니다:

  • 독립적인 파이썬 인터프리터: 가상 환경마다 자체적인 파이썬 실행 파일(인터프리터)을 가집니다.
  • 독립적인 site-packages: 가상 환경 내부에 패키지를 설치하는 전용 디렉토리(site-packages)가 있어서, 다른 가상 환경이나 전역 환경에 영향을 주지 않습니다.
  • 프로젝트별 격리: 각 프로젝트는 자신만의 가상 환경을 가질 수 있으며, 이로 인해 프로젝트 간 패키지 충돌을 방지합니다.

마치 여러분의 컴퓨터 안에 여러 개의 파이썬 작업실을 만들어, 각 작업실마다 필요한 도구(패키지)만 비치해두는 것과 같습니다. A 프로젝트 작업실의 도구가 B 프로젝트 작업실에 영향을 주지 않는 것이죠.


Part 2: 왜 가상 환경을 사용해야 하는가?

가상 환경을 사용하는 것은 깔끔하고 효율적인 개발 워크플로우를 위해 매우 중요합니다.

  1. 의존성 지옥(Dependency Hell) 방지:
    • 프로젝트 A는 requests 라이브러리 버전 2.20.0이 필요하고, 프로젝트 B는 requests 버전 2.25.0이 필요하다고 가정해봅시다. 가상 환경이 없다면 두 프로젝트 모두를 충족시키는 requests 버전을 시스템 전역에 설치하기 어렵습니다.
    • 가상 환경을 사용하면 각 프로젝트는 독립된 환경에서 필요한 특정 버전의 패키지를 설치하고 사용할 수 있습니다.
  2. 프로젝트별 의존성 관리:
    • 각 프로젝트에 필요한 패키지만 설치하여 환경을 가볍게 유지할 수 있습니다.
    • 필요 없는 패키지들로 인해 환경이 복잡해지는 것을 막습니다.
  3. 배포 용이성:
    • 프로젝트에 사용된 모든 패키지와 그 버전을 requirements.txt 파일로 쉽게 내보낼 수 있습니다.
    • 다른 개발자나 배포 서버에서 이 파일을 사용하여 정확히 동일한 개발 환경을 구축할 수 있습니다.
  4. 클린한 개발 환경 유지:
    • 글로벌 파이썬 환경을 건드리지 않으므로, 시스템 전체 파이썬 설치에 영향을 줄 위험이 줄어듭니다.

Part 3: 가상 환경 생성 및 사용법 (venv 모듈 활용)

파이썬 3.3부터는 표준 라이브러리에 venv 모듈이 포함되어 별도의 설치 없이 가상 환경을 쉽게 만들고 관리할 수 있습니다.

1. 가상 환경 생성하기

프로젝트 폴더(예: my_project)를 만들고 그 안에서 가상 환경을 생성하는 것이 일반적입니다.

명령어:

Bash
 
# 1. 프로젝트 폴더 생성 및 이동
mkdir my_project
cd my_project

# 2. 가상 환경 생성 (환경 이름은 보통 'venv' 또는 '.venv'로 합니다)
python -m venv venv
# 또는 python3 -m venv venv (시스템에 python2와 python3가 모두 설치된 경우)

파이썬 가상 환경 생성 명령 및 결과

 

생성된 venv 폴더 안에는 독립적인 파이썬 실행 파일과 site-packages 디렉토리 등이 포함됩니다.

 

2. 가상 환경 활성화(Activate)하기

가상 환경을 생성한 후에는 이를 **활성화(Activate)**해야 합니다. 활성화하면 터미널의 프롬프트가 변경되어 현재 가상 환경이 사용 중임을 알 수 있으며, 이때부터 pip install 등으로 설치하는 모든 패키지는 이 가상 환경에만 설치됩니다.

명령어:

  • Windows (명령 프롬프트):
  •  
    .\venv\Scripts\activate
    
  • Bash
     
  • Windows (PowerShell):
  • PowerShell
     
    .\venv\Scripts\Activate.ps1
    
  • macOS / Linux (Bash/Zsh):
  • Bash
     
    source venv/bin/activate
    

 
파이썬 가상 환경 활성화 명령 및 프롬프트 변화

3. 가상 환경에 패키지 설치하기

가상 환경이 활성화된 상태에서 pip install 명령어를 사용하면, 해당 패키지가 현재 활성화된 가상 환경에만 설치됩니다.

명령어:

Bash
 
# 가상 환경 활성화된 상태에서
pip install requests
pip install beautifulsoup4

예시:

Python
 
파이썬 가상환경

4. 설치된 패키지 확인하기

현재 가상 환경에 설치된 모든 패키지를 확인하려면 pip freeze 명령어를 사용합니다.

명령어:

Bash
 
# 가상 환경 활성화된 상태에서
pip freeze

예시:

Python
 
파이썬 가상환경에 설치된 패키지 예시

5. requirements.txt 파일 생성 및 사용

프로젝트의 의존성을 다른 사람과 공유하거나 배포할 때 pip freeze의 출력을 requirements.txt 파일로 저장하여 사용합니다.

명령어:

Bash
 
# 1. 현재 환경의 패키지 목록을 파일로 저장
pip freeze > requirements.txt

# 2. 다른 환경에서 이 파일을 사용하여 패키지 설치
pip install -r requirements.txt

예시:

Python
 
파이썬 내용확인

6. 가상 환경 비활성화(Deactivate)하기

가상 환경에서의 작업을 마치면 비활성화하여 원래의 전역 파이썬 환경으로 돌아올 수 있습니다.

명령어:

Bash
 
# 가상 환경 활성화된 상태에서
deactivate

예시:

Python
 
파이썬 가상환경 비활성화

Part 4: VS Code에서 가상 환경 사용하기

VS Code는 파이썬 가상 환경을 매우 잘 지원합니다.

  1. 가상 환경 생성: VS Code 터미널에서 위에서 배운 python -m venv venv 명령어를 직접 실행할 수 있습니다.
  2. 인터프리터 선택:
    • VS Code 하단 상태바의 파이썬 버전을 클릭하거나, Ctrl+Shift+P (또는 Cmd+Shift+P)를 눌러 명령 팔레트를 열고 "Python: Select Interpreter"를 검색합니다.
    • 생성된 가상 환경(venv)을 선택하면 VS Code가 해당 가상 환경의 파이썬 인터프리터를 사용하여 코드를 실행하고 패키지를 관리합니다.
  3. 자동 활성화: VS Code 터미널을 열면, 설정에 따라 가상 환경이 자동으로 활성화되도록 설정할 수 있습니다.

마무리하며

이번 시간에는 파이썬 개발의 필수적인 도구인 **가상 환경(Virtual Environment)**의 개념과 venv 모듈을 이용한 생성 및 사용법에 대해 자세히 알아보았습니다.

  • 가상 환경은 프로젝트별로 독립적인 파이썬 환경을 구축하여 패키지 충돌을 방지하고 의존성을 깔끔하게 관리할 수 있게 해줍니다.
  • python -m venv <env_name>으로 생성하고, 각 운영체제에 맞는 스크립트로 활성화합니다.
  • 활성화된 가상 환경에서 pip install로 패키지를 설치하고, pip freeze > requirements.txt로 의존성을 내보냅니다.

가상 환경은 파이썬 프로젝트를 전문적으로 관리하는 데 있어 가장 기본적이면서도 중요한 습관이므로, 모든 프로젝트에서 적극적으로 활용하시길 강력히 권장합니다.

이것으로 '파이썬 고급 문법 & 실전 예제' 챕터의 두 번째 포스팅이 마무리됩니다. 다음 포스팅에서는 파이썬의 모듈과 패키지를 체계적으로 구성하고 관리하는 방법에 대해 알아보겠습니다.


궁금한 점이 있다면 언제든지 질문해주세요! 다음 포스팅에서 만나요!

반응형