pyenv와 venv의 차이 및 충돌 상황 정리 (Windows 기준)

2025. 4. 29. 12:05·기술블로그-Django편

💡 pyenv와 venv의 차이 및 충돌 상황 정리 (Windows 기준)


Mac에서도 pyenv만 쓰면 가상환경 격리는 안 된다. 하지만
pyenv-virtualenv를 추가로 써야 진짜로 버전과 가상환경까지 완벽히 분리된다!

eval \"$(pyenv init --path)\"
eval \"$(pyenv init -)\"
eval \"$(pyenv virtualenv-init -)\"

🎯 아주 깔끔한 비교표

    항목                                                Windows pyenv-win                   Mac/Linux pyenv + pyenv-virtualenv

 

기본 설치 pyenv만 pyenv + pyenv-virtualenv 설치 가능
Python 버전 격리 ✅ ✅
패키지(pip) 격리 ❌ pyenv만으로는 불가능 ⭕ pyenv-virtualenv 쓰면 가능

 

 

🔎 문제 상황 요약

Windows 환경에서 다음과 같은 혼동/오류 상황이 발생했다:

pyenv local 3.13.2
python.exe -m pip install --upgrade pip

그러나 pip 경로가 아래처럼 시스템 Python 경로로 나오는 현상:

Requirement already satisfied: pip in c:\users\LG 울트라PC\appdata\local\programs\python\python313\lib\site-packages (25.1)

➡️ 이건 pyenv로 Python 버전을 지정했지만, 실제 가상환경(venv)을 만들지 않았기 때문이다.


🔧 원인 분석

항목 설명

pyenv 여러 Python 버전 설치 및 폴더별 선택만 해주는 도구 (가상환경 아님)
venv 하나의 Python 버전을 기반으로 독립된 패키지 공간을 만드는 도구
오류 원인 pyenv만 사용했고, 별도의 venv 생성이 없었기 때문에 시스템 pip가 호출됨

✅ 해결 방법 요약

1. pyenv로 Python 버전 선택

pyenv install 3.13.2
pyenv local 3.13.2

2. 해당 폴더에서 가상환경(venv) 생성

python -m venv .venv

3. 가상환경 활성화 (Windows PowerShell 기준)

.\.venv\Scripts\Activate
deactivate

4. pip 업그레이드 확인 (이제 venv 내부 pip가 사용됨)

python -m pip install --upgrade pip

🧠 핵심 개념 비교: pyenv vs venv

항목 pyenv venv

역할 다양한 Python 버전 설치 및 전환 독립된 패키지 환경 생성
격리 단위 Python 자체 pip 패키지 공간
추천 상황 여러 버전이 필요한 개발자 프로젝트별 분리 필요할 때
조합 가능 여부 ✅ 함께 사용하면 최강 ✅ pyenv + venv = 실무 조합

🎯 최종 정리

pyenv는 Python 버전 관리자일 뿐, pip 환경까지 격리해주지 않는다.

python -m venv로 독립된 가상환경을 만들어야 pip가 제대로 분리되어 설치된다.

✅ pyenv + venv 조합을 쓰면:

  • 버전도 따로, 패키지도 따로 관리 가능
  • 실무에서 완벽한 프로젝트 환경 분리가 가능하다.

✨ 실전 명령어 흐름

pyenv install 3.13.3
mkdir flask-app
cd flask-app
pyenv local 3.13.3
python -m venv .venv
.\.venv\Scripts\Activate
pip install flask
mkdir django-app
cd django-app
pyenv local 3.13.3
python -m venv .venv
.\.venv\Scripts\Activate
pip install django

📌 → flask-app과 django-app은 버전과 패키지가 완전히 격리된 진짜 가상환경!


✅ 이런 흐름을 알고 쓰면 pyenv와 venv를 헷갈릴 일이 없다!

'기술블로그-Django편' 카테고리의 다른 글

✅ Python 환경 설정부터 Django 설치 (feat. pyenv, Pycharm, Poetry)  (0) 2025.04.29
Poetry란? 설치방법 및 pyenv와 차이점  (0) 2025.04.29
📌 PyCharm을 명령줄에서 실행할 수 있도록 설정하기 (Windows 환경 + WSL 연동 포함)  (0) 2025.04.29
🖥️ PyCharm WSL Interpreter 설정 오류  (0) 2025.04.29
📚 WSL 전체 세팅 과정 정리  (0) 2025.04.29
'기술블로그-Django편' 카테고리의 다른 글
  • Poetry란? 설치방법 및 pyenv와 차이점
  • 📌 PyCharm을 명령줄에서 실행할 수 있도록 설정하기 (Windows 환경 + WSL 연동 포함)
  • 🖥️ PyCharm WSL Interpreter 설정 오류
  • 📚 WSL 전체 세팅 과정 정리
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (794)
      • Python (32)
      • 프로젝트 (113)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (154)
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    chatgpterror
    hotcoffeecase
    urbantrends
    smartphonedurability
    basalcellcarcinoma
    btsdischarge
    livebroadcast
    gpterror
    RM
    classaction
    homebartrend
    youngprofessionals
    titaniumcase
    trumpmuskclash
    americaparty
    travel ban
    college reunions
    bts
    newpoliticalparty
    life reflection
    btsjungkook
    global politics
    lawsuitculture
    btscomeback
    remittance
    chinanightlife
    btsreunion
    뷔
    self-growth
    americanlaw
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
pyenv와 venv의 차이 및 충돌 상황 정리 (Windows 기준)
상단으로

티스토리툴바