[Python] venv와 Python 버전 관리: pyenv와 함께 쓰는 완벽한 조합

Posted by

Python 개발에서 가장 흔히 겪는 문제 중 하나는 다양한 Python 버전과 패키지 충돌이다. 프로젝트마다 요구하는 Python 버전이 다르거나, 팀원 간 환경이 달라 예상치 못한 오류가 발생할 수 있다. 이를 해결하기 위해 venvpyenv를 함께 활용하면, Python 버전 관리와 가상 환경 설정을 효율적으로 해결할 수 있다.

이번 포스트에서는 venvpyenv의 개념과 역할, 그리고 이를 조합하여 사용하는 방법을 단계별로 알아보자.


venv와 pyenv의 역할 이해하기

venv란?

venv는 Python 표준 라이브러리로 제공되는 가상 환경 생성 도구다. 프로젝트마다 패키지와 의존성을 분리하여 관리할 수 있게 해준다.

주요 기능:

  • 프로젝트별 패키지 격리
  • 같은 Python 버전에서의 환경 관리

pyenv란?

pyenvPython 버전을 관리하는 도구다. 여러 버전의 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 버전과 가상 환경 설정

다음 단계별로 진행하면 pyenvvenv를 함께 사용할 수 있다.

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

여러 프로젝트 환경 관리하기

pyenvvenv를 사용하면 프로젝트마다 다른 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:

  1. pyenv rehash 명령어로 버전을 다시 인식.
  2. Python 버전 인식 가능한지 확인

해결 방법 2. PATH 설정 확인하기:

  1. pyenv version 명령어로 입력 시 위 이미지와 같이 에러가 발생하는 경우
  2. 환경 변수에 아래 두 경로를 시스템 변수의 Path 목록에 최상단이 오도록 설정한다.
    %USERPROFILE%\anaconda3\Lib\site-packages\pyenv-win\bin
    %USERPROFILE%\anaconda3\Lib\site-packages\pyenv-win\shims

문제 2: 가상 환경에서 다른 Python 버전이 활성화될 때

원인: pyenvvenv가 충돌했을 가능성이 높다.
해결 방법:

  1. pyenv local로 Python 버전을 명시적으로 설정.
  2. 올바른 Python 버전으로 가상 환경을 다시 생성.

문제 3: Windows PowerShell에서 venv 활성화가 안 될 때

해결 방법: PowerShell 실행 정책을 변경한다

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope LocalMachine

pyenv-virtualenv로 더 쉽게 관리하기

pyenv-virtualenv 플러그인을 사용하면 pyenvvenv의 통합 관리를 더욱 간단히 할 수 있다.

설치 방법:

git clone https://github.com/pyenv/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv

가상 환경 생성 및 활성화:

pyenv virtualenv 3.11.2 myenv
pyenv activate myenv

venvpyenv를 함께 사용하면 Python 버전 관리와 패키지 격리를 효율적으로 구현할 수 있다. 특히 여러 프로젝트를 동시에 진행하는 개발자나 협업 환경에서는 이 조합이 큰 이점을 제공한다. Python 개발 환경을 체계적으로 관리하고 싶다면, 이 방법을 실무에 적극 활용해 보자.

Leave a Reply

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다