본문 바로가기
코딩취미/Python

파이썬 가상환경 venv 완전 정복 가이드

by 브링블링 2025. 6. 20.
반응형

🐍 파이썬 가상환경 venv 완전 정복 가이드

프로젝트마다 다른 패키지를 설치해도 충돌 없이 관리할 수 있는 방법이 있을까요?
정답은 바로 **파이썬 가상환경(venv)**입니다!

 

이 글은 파이썬 초보자를 대상으로 venv의 기초 개념부터 사용법, 옵션, 예제까지 쉽게 설명하는 올인원 가이드입니다.


🔰 venv란? 간단한 정의부터 시작하자

venv는 Virtual Environment의 약자로,
파이썬 프로젝트마다 독립적인 패키지 공간을 만들어주는 도구입니다.

  • 파이썬 3.3 이상부터 표준 라이브러리로 내장
  • python -m venv 명령으로 가상환경 생성
  • 글로벌 환경에 영향을 주지 않고 안전하게 패키지를 설치할 수 있음

🕰️ venv의 역사 (히스토리)

연도 설명
2011년 virtualenv라는 외부 패키지가 가상환경 도구로 널리 사용됨
2012년 (Python 3.3) venv가 공식 파이썬에 내장됨 → virtualenv의 기능 일부 흡수
이후 표준 도구로 자리잡고 대부분의 Python 3.x 프로젝트에 사용됨

📘 사용 전 알아야 할 기초 개념

개념 설명
글로벌 환경 PC에 설치된 기본 파이썬 환경
가상환경 프로젝트만의 독립된 파이썬 환경
패키지 pip install로 설치하는 외부 라이브러리
requirements.txt 가상환경의 패키지를 정리한 목록 파일
 

반응형

🛠️ venv 사용법 – 단계별 가이드

✅ 1단계: 가상환경 생성

python -m venv myenv
  • myenv: 생성할 가상환경 폴더 이름 (원하는 이름으로 바꿔도 됨)
  • 실행하면 myenv/ 폴더가 생성되고, 내부에 파이썬 실행 파일 및 패키지 관리 시스템이 들어 있음

✅ 2단계: 가상환경 활성화

  • Windows
  • macOS / Linux
myenv\Scripts\activate
source myenv/bin/activate

활성화되면 커맨드 프롬프트가 (myenv)로 바뀝니다.
이제 이 상태에서 설치한 패키지는 myenv 내부에만 적용됩니다.


✅ 3단계: 패키지 설치 및 개발 진행

pip install requests flask

설치된 패키지는 myenv/Lib/site-packages에 저장되며, 다른 프로젝트에는 영향을 주지 않습니다.


✅ 4단계: 가상환경 비활성화

deactivate

활성화된 가상환경을 종료하고 원래 환경으로 돌아갑니다.


⚙️ venv 주요 옵션 설명

python -m venv [옵션] <디렉토리>
옵션 설명
--prompt NAME 가상환경 활성화 시 표시되는 이름을 지정
예: --prompt myproject
--clear 이미 존재하는 가상환경을 초기화
--upgrade 기존 가상환경을 최신 파이썬으로 업그레이드
--without-pip pip 설치 없이 가상환경 생성 (비추천)

✅ 예제: 이름을 변경하여 생성하기

python -m venv myenv --prompt "MYAPP"
 

활성화 시 프롬프트가 (MYAPP) 형태로 표시됩니다.


📁 예제 프로젝트 구조

myproject/
├── myenv/               # 가상환경 디렉토리
├── app.py               # 주요 코드
├── requirements.txt     # 설치 패키지 목록
└── README.md

🧪 예시 코드 & 테스트

# app.py
import requests

def get_ip():
    return requests.get("https://api.ipify.org?format=json").json()["ip"]

if __name__ == "__main__":
    print("My IP:", get_ip())

테스트 코드 (pytest 기반)

# test_app.py
from app import get_ip

def test_get_ip(monkeypatch):
    class MockResponse:
        def json(self):
            return {"ip": "127.0.0.1"}
    monkeypatch.setattr("requests.get", lambda url: MockResponse())
    assert get_ip() == "127.0.0.1"

🧠 자주 하는 실수와 해결법

문제 원인 해결 방법
pip 명령이 안 됨 venv 활성화 안 됨 activate 명령으로 활성화
ModuleNotFoundError 패키지 설치 안 됨 pip install로 설치
command not found bash/zsh 경로 문제 source myenv/bin/activate 확인

✅ venv vs virtualenv 간단 비교

항목 venv virtualenv
기본 제공 ✅ (Python 3.3+) ❌ (설치 필요)
파이썬 2 지원
가볍고 빠름 보통
복잡한 설정

대부분의 Python 3.x 프로젝트에는 venv 사용이 권장됩니다.

 

🧺 마무리

파이썬의 venv는 초보자부터 실무 개발자까지 필수적으로 익혀야 할 기능입니다.
가상환경을 활용하면 패키지 충돌 없는 안전한 개발, 협업 시 환경 통일, 배포 시 신뢰성 확보라는 3박자를 모두 만족할 수 있습니다.

반응형