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.5
pyenv 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_a
pyenv local 3.10.2
python -m venv venv
source venv/bin/activate
pip install django==3.2
프로젝트 B 설정:
cd project_b
pyenv local 3.8.5
python -m venv venv
source venv/bin/activate
pip install flask==2.0
문제 해결
문제 1: 설치된 Python 버전이 동작하지 않을 때
해결 방법 1:
pyenv rehash
명령어로 버전을 다시 인식.- Python 버전 인식 가능한지 확인
해결 방법 2. PATH 설정 확인하기:
pyenv version
명령어로 입력 시 위 이미지와 같이 에러가 발생하는 경우- 환경 변수에 아래 두 경로를 시스템 변수의 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
pyenv-virtualenv로 더 쉽게 관리하기
pyenv-virtualenv
플러그인을 사용하면 pyenv
와 venv
의 통합 관리를 더욱 간단히 할 수 있다.
설치 방법:
git clone https://github.com/pyenv/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
가상 환경 생성 및 활성화:
pyenv virtualenv 3.11.2 myenv
pyenv activate myenv
venv
와 pyenv
를 함께 사용하면 Python 버전 관리와 패키지 격리를 효율적으로 구현할 수 있다. 특히 여러 프로젝트를 동시에 진행하는 개발자나 협업 환경에서는 이 조합이 큰 이점을 제공한다. Python 개발 환경을 체계적으로 관리하고 싶다면, 이 방법을 실무에 적극 활용해 보자.