[Python] 가상환경 관리 도구 pyenv / venv

HAHAHELLO·2024년 7월 30일

파이썬

목록 보기
32/50
post-thumbnail

pyenv

여러 Python 프로젝트를 하나의 머신(PC)에서 개발하다보면, 각각의 프로젝트에서 사용하는 Python 버전에 따라 개발 환경을 구축해야할 경우가 있다.
이때, 매번 Python을 지우고 해당 프로젝트에 필요한 Python 버전을 설치할 수는 없다. 이럴때 pyenv를 사용하여 하나의 머신에서 다양한 Python 버전을 설치하고 관리할 수 있다.

pyenv 설치 및 사용

# pyenv 설치 
$ pip install pyenv
# python 버전 리스트
$ pyenv install --list
# python 3.9.9 설치
$ pyenv install 3.9.9
# 설치된 python 버전 확인
$ pyenv versions
# 현재 사용중인 가상환경 확인
$ pyenv version
# 설치한 python 버전 사용하기
$ pyenv global 3.9.9
# 현재 프로젝트에서만 사용할 버전 설정하기
$ pyenv local 3.9.9
# 현재 shell애서만 사용할 버전 설정하기
$ pyenv shell 3.9.9
  • pyenv local 명령어
    .python-version 파일을 생성하고 개발 환경에 pyenv가 활성화되어 있는 경우, 자동으로 해당 버전을 사용하도록 변경해준다.

환경설정

# pyenv 사용을 위한 .zshrc 파일 수정
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

venv


다른 언어와 달리 파이썬에서는 일반적으로 프로젝트 별로 독립된 개발 환경을 구성하기 위해서 가상 환경 (virtual environment)을 이용한다. venv라는 내장 모듈을 통해서 쉽게 가상 환경을 만들 수 있으며 이를 통해 프로젝트 간 의존성 충돌 문제를 효과적으로 예방할 수 있다.
파이썬에서 가상 환경(virtual environment)은 하나의 컴퓨터에서 프로젝트 별로 독룁된 파이썬 실행 환경(runtime)을 구성할 수 있도록 해준다. 가상 환경을 사용하지 않으면 컴퓨터 내의 모든 프로젝트에서 하나의 파이썬 실행 환경을 사용하면서 동일한 경로에 외부 패키지를 설치하고 서로 공유하게 되는데 이럴 경우, 하나의 프로젝트에서 설치한 패키지의 버전이 다른 프로젝트에서 설치한 동일 패키지의 다른 버전과 충동을 일으킬 소지가 생기기 때문에, 일반적으로 파이썬 프로젝트 별로 독립된 가상 환경을 구성하여 사용하는 것이 권장된다.

venv 설치

# pyenv-vitualenv 설치
$ cd <프로젝트 디렉터리>
$ pip install pyenv-virtualenv
# 가상환경 활성화
$ source .venv/bin/activate
# 어떤 파이썬 인터프리터가 사용되는지 확인
$ which python
# 가상환경에서 제공하는 파이썬의 버전 확인
$ python -V
# 가상환경 비활성화
$ deactivate
# 비활성화 되었는지 다시 확인
$ which python 

# 가상환경을 소스버전 관리 시스템에 올릴 필요가 없기 때문에 .venv 디렉토리를 .gitignore 파일에 추가
$ echo '.venv' >> .gitignore

환경설정

# pyenv-virtualenv 사용을 위한 수정
eval "$(pyenv virtualenv-init -)" 

Pyenv를 사용하면 여러 파이썬 버전에 대한 관리가 가능하지만 이를 활용해 가상환경을 만드려면 pyenv- virtualenv가 필요하다. Pyenv 때와 마찬가지로 pip로 설치 후에 .zshrc 파일을 수정한다.

  • 가상환경에 패키지 설치
    가상환경이 활성화된 상태에서 패키지를 설치하면 .venv 디렉터리 내부에 해당 패키지가 설치되므로 컴퓨터에 설치되어 있는 파이썬 실행 환경이나 다른 파이썬 프로젝트에 영향을 주지 않는다.

참고 블로그
https://deku.posstree.com/ko/environment/pyenv/
https://www.daleseo.com/python-pyenv/

profile
데이터 엔지니어가 되어 봅시다 🌈

0개의 댓글