Python 개발에서 가장 흔히 겪는 문제 중 하나는 다양한 Python 버전과 패키지 충돌이다. 프로젝트마다 요구하는 Python 버전이 다르거나, 팀원 간 환경이 달라 예상치 못한 오류가 발생할 수 있다. 이를 해결하기 위해 venv와 pyenv를 함께 활용하면, Python 버전 관리와 가상 환경 설정을 효율적으로 해결할 수 있다.
이번 포스트에서는 venv와 pyenv의 개념과 역할, 그리고 이를 조합하여 사용하는 방법을 단계별로 알아보자.
venv와 pyenv의 역할 이해하기
venv란?
venv는 Python 표준 라이브러리로 제공되는 가상 환경 생성 도구다. 프로젝트마다 패키지와 의존성을 분리하여 관리할 수 있게 해준다.
주요 기능:
- 프로젝트별 패키지 격리
- 같은 Python 버전에서의 환경 관리
pyenv란?
pyenv는 Python 버전을 관리하는 도구다. 여러 버전의 Python을 쉽게 설치하고, 특정 버전을 프로젝트별로 설정하거나 전역으로 사용할 수 있다.
주요 기능:
- 다양한 Python 버전 설치 및 전환
- 프로젝트별 Python 버전 지정
- Python 버전 충돌 방지
왜 두 도구를 함께 사용해야 할까?
pyenv는 Python 버전을 통제하고,venv는 각 버전에서 가상 환경을 생성한다.- 두 도구를 결합하면 Python 버전 관리와 패키지 격리를 완벽히 구현할 수 있다.
pyenv와 venv 설정하기
pyenv 설치 및 기본 설정
1단계: pyenv 설치
운영 체제에 따라 설치 방법이 다르며, 아래 포스트를 참고하자.
2단계: Python 버전 설치
pyenv install 3.8.5pyenv install 3.10.2
3단계: 설치된 Python 버전 확인
pyenv versions
4단계: 프로젝트별 Python 버전 설정
pyenv local 3.8.5
venv 설정
1단계: 가상 환경 생성 pyenv로 설정한 Python 버전에서 가상 환경을 생성한다.
python -m venv venv
2단계: 가상 환경 활성화
- macOS/Linux:
source venv/bin/activate
- Windows:
venv\Scripts\activate
3단계: 가상 환경 비활성화
deactivate
pyenv와 venv 조합하여 사용하기
프로젝트별 Python 버전과 가상 환경 설정
다음 단계별로 진행하면 pyenv와 venv를 함께 사용할 수 있다.
Python 버전 설정: 프로젝트 폴더에서 해당 명령어를 실행하면, 폴더 내 Python 버전이 3.11.2로 고정된다.
pyenv local 3.11.2
가상 환경 생성:
python -m venv [venv_project_name]
가상 환경 활성화 후 패키지 설치:
source venv_project_name/bin/activate pip install requests flask
의존성 저장:
pip freeze > requirements.txt
여러 프로젝트 환경 관리하기
pyenv와 venv를 사용하면 프로젝트마다 다른 Python 버전과 의존성을 쉽게 관리할 수 있다.
예를 들어,
- 프로젝트 A: Python 3.10.2, Django 3.2
- 프로젝트 B: Python 3.8.5, Flask 2.0
프로젝트 A 설정:
cd project_apyenv local 3.10.2python -m venv venvsource venv/bin/activatepip install django==3.2
프로젝트 B 설정:
cd project_bpyenv local 3.8.5python -m venv venvsource venv/bin/activatepip install flask==2.0
문제 해결
문제 1: 설치된 Python 버전이 동작하지 않을 때
해결 방법 1:
pyenv rehash명령어로 버전을 다시 인식.- Python 버전 인식 가능한지 확인
해결 방법 2. PATH 설정 확인하기:
![[Python] venv와 Python 버전 관리: pyenv와 함께 쓰는 완벽한 조합 - 2 pyenv version check](https://i0.wp.com/blog.deeplink.kr/wp-content/uploads/2025/01/image.png?resize=810%2C103&ssl=1)
pyenv version명령어로 입력 시 위 이미지와 같이 에러가 발생하는 경우- 환경 변수에 python lib가 저장된 경로에서 pyenv-win 폴더를 찾아 전체 경로를 포함한 아래 두 경로를 시스템 변수의 Path 목록에 최상단이 오도록 설정한다.
%USERPROFILE%\anaconda3\Lib\site-packages\pyenv-win\bin%USERPROFILE%\anaconda3\Lib\site-packages\pyenv-win\shims
문제 2: 가상 환경에서 다른 Python 버전이 활성화될 때
원인: pyenv와 venv가 충돌했을 가능성이 높다.
해결 방법:
pyenv local로 Python 버전을 명시적으로 설정.- 올바른 Python 버전으로 가상 환경을 다시 생성.
문제 3: Windows PowerShell에서 venv 활성화가 안 될 때
해결 방법: PowerShell 실행 정책을 변경한다
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope LocalMachine
venv와 pyenv를 함께 사용하면 Python 버전 관리와 패키지 격리를 효율적으로 구현할 수 있다. 특히 여러 프로젝트를 동시에 진행하는 개발자나 협업 환경에서는 이 조합이 큰 이점을 제공한다. Python 개발 환경을 체계적으로 관리하고 싶다면, 이 방법을 실무에 적극 활용해 보자.
