[설치] pyenv 어서 오고

서쿠·2024년 4월 26일
9

환경구축

목록 보기
2/4
post-thumbnail
post-custom-banner

Anaconda(Conda)는 머신러닝, 데이터과학 분야의 다양한 라이브러리들이 설치된 런타임인 아나콘다 파이썬에서 기본적으로 제공되는 가상환경 모듈입니다. 아나콘다는 라이센스 문제가 있는 데 팀/회사 등에서 사용 시 라이센스를 구매해야 한다는 조항이 있습니다.

💡 Anaconda is a commercial distribution of Python with the most popular python libraries, you are not permitted to use Anaconda in an organisation with more than 200 employees. - Anaconda

더 이상 라이센스 문제로 콘다를 사용할 수 없는 상황에서 대체할만한 가상 환경 모듈을 열심히 찾아보던 중 virtualenv, venv, pyenv, pipenv이 있는 것을 확인했고, 이에 대해 간단한 조사를 수행했습니다. 아래는 본 블로그 포스트와 관련있는 용어들을 정리한 내용입니다.

  • pip: pip는 Python 패키지 인스톨러로, Python 패키지를 설치하고 관리하는 표준 도구입니다.
    PyPI(Python Package Index)에서 패키지를 찾아 설치할 수 있으며, 요구사항 파일(requirements.txt)을 통해 여러 패키지를 일괄 설치하는 것도 가능합니다.

  • venv: venv는 Python 3.3 버전 이상에서 기본적으로 제공되는 가상 환경 생성 도구입니다.
    이 도구를 사용하면 각 프로젝트에 독립된 Python 환경을 생성할 수 있어, 서로 다른 프로젝트에서 서로 다른 패키지 버전을 관리할 수 있습니다.

  • virtualenv : virtualenv는 venv보다 더 오래전부터 사용되어 온 가상 환경 도구로, venv가 나오기 전에 널리 사용되었습니다. venv와 마찬가지로 독립된 Python 환경을 제공하지만, 이전 버전의 Python에서도 사용할 수 있으며 추가적인 기능을 제공합니다. (별도의 설치 필요)

  • pyenv : pyenv는 다양한 버전의 Python을 설치하고 관리할 수 있게 해주는 도구입니다.
    pyenv를 사용하면 시스템의 기본 Python 버전을 변경하지 않고도, 프로젝트별로 다른 Python 버전을 사용할 수 있습니다.(별도의 설치 필요)

  • pipenv : pipenv는 패키지 관리와 가상 환경 관리를 하나의 도구로 통합한 것입니다.
    Pipfile과 Pipfile.lock을 사용하여 패키지의 의존성을 관리하며, 가상 환경을 자동으로 생성하고 관리할 수 있습니다.(별도의 설치 필요)

이번 글에서는 파이썬 버전 컨트롤을 통해 버전 별로 가상환경을 만들 수 있는 pyenv에 대한 글을 작성해보록 하겠습니다. 다음 편에는 파이썬 버전 관리를 위한 PyENV와 함께 패키지 관리를 효율적으로 하게 해주는 pipenv에 대해서 소개하고 이를 활용해서 개발/분석 환경을 설정해보도록 하겠습니다.

PyENV

앞에서도 가볍게 소개하긴 했지만, PyENV는 다양한 버전의 파이썬을 관리하고 사용할 수 있게 해주는 인기 있는 도구입니다. 특히 한 시스템에서 여러 파이썬 버전을 간편하게 설치하고 전환할 수 있도록 지원합니다. 이는 파이썬 개발자나 시스템 관리자가 여러 프로젝트에서 다양한 파이썬 버전의 호환성을 유지하면서 작업할 수 있도록 돕습니다.

PyENV를 사용하는 이유

  1. 다중 파이썬 버전 관리: 프로젝트마다 요구하는 파이썬 버전이 다를 수 있습니다. PyENV를 사용하면 시스템의 기본 파이썬 환경을 변경하지 않고도 여러 버전의 파이썬을 설치하고 관리할 수 있습니다.

  2. 환경 분리: PyENV는 각 프로젝트별로 독립적인 파이썬 환경을 설정할 수 있도록 도와줍니다. 이를 통해 서로 다른 의존성을 가진 프로젝트가 서로 영향을 미치지 않고 독립적으로 작동할 수 있습니다.

  3. 간편한 버전 전환: PyENV를 사용하면 커맨드 라인 명령어를 통해 쉽게 파이썬 버전을 전환할 수 있습니다. 이는 개발 중에 특정 파이썬 버전으로의 테스트를 빠르게 수행할 수 있게 해줍니다.

  4. 호환성 테스트: 다양한 파이썬 버전에서 애플리케이션을 테스트하고 싶을 때 PyENV는 이를 간편하게 만들어 줍니다. 이는 소프트웨어가 다양한 환경에서도 제대로 작동하는지 보장하는 데 중요합니다.

  5. 시스템 파이썬과의 독립성: PyENV는 시스템에 사전에 설치된 파이썬에 의존하지 않고 작동합니다. 이는 시스템 파이썬을 변경하거나 업그레이드하지 않고도 새로운 버전의 파이썬을 시험해 볼 수 있게 해줍니다.

PyENV의 작동 방식

PyENV는 사용자의 홈 디렉토리에 .pyenv라는 디렉토리를 생성하고, 여기에 여러 버전의 파이썬을 설치합니다. 이후 환경 설정을 통해 PATH 환경 변수에 이 디렉토리를 추가하여, 터미널에서 파이썬을 실행할 때 PyENV가 관리하는 버전을 우선적으로 사용하도록 합니다. 또한, pyenv init 명령을 사용하여 쉘을 구성하고, 파이썬 버전을 쉽게 전환할 수 있는 환경을 제공합니다.

PyENV는 파이썬 버전 관리뿐만 아니라 pyenv-virtualenv 플러그인을 통해 각 버전에 대한 가상 환경도 관리할 수 있어, 개발자의 작업을 더욱 효율적으로 만들어 줍니다. 이러한 기능 덕분에 PyENV는 파이썬 개발자들 사이에서 필수적인 도구로 자리잡고 있습니다.

PyENV 설치 및 설정 방법

PyENV를 설치하고 설정하는 과정은 여러 단계로 나누어집니다. 이 과정을 통해 여러 파이썬 버전을 쉽게 관리하고 필요에 따라 버전을 전환할 수 있습니다. 아래에서는 우분투 시스템을 기준으로 PyENV를 설치하고 환경을 설정하는 단계별 방법을 설명합니다.

✍️ 아래는 LINUX 시스템을 기저로 설명하고 있습니다. PyENV를 Windows에 설치하는 방법은 본 글 가장 마지막 장에서 설명하도록 하겠습니다.

1단계: 시스템 패키지 업데이트

설치 전에 시스템 패키지 목록을 최신 상태로 업데이트합니다.

sudo apt-get update -y && sudo apt-get upgrade -y

2단계: 필수 도구 설치

PyENV 설치에 필요한 기본 도구들을 설치합니다.

# 필요한 의존성 설치 (Ubuntu/Debian 기준)
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl git llvm python3-openssl \
libncurses5-dev libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev \
libffi-dev liblzma-dev

3단계: PyENV 설치

curl을 사용하여 PyENV 설치 스크립트를 다운로드하고 실행합니다. 이 스크립트는 PyENV와 함께 필요한 모든 플러그인을 설치합니다.

curl https://pyenv.run | bash

4단계: 환경 설정 추가

사용자의 홈 디렉토리에 위치한 ~/.bashrc 파일에 다음과 같이 환경 설정을 추가합니다. 이 설정은 PyENV가 시스템에 통합되어 작동하도록 도와줍니다.

echo 'export PATH="${HOME}/.pyenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
  1. echo 'export PATH="${HOME}/.pyenv/bin:$PATH"' >> ~/.bashrc : 이 명령은 pyenv 실행 파일이 위치한 디렉토리를 시스템의 PATH 환경 변수에 추가합니다. PATH는 쉘에서 실행 가능한 명령어들을 찾을 때 참조하는 디렉토리의 목록을 포함하고 있습니다. ${HOME}/.pyenv/bin을 PATH에 추가함으로써, 사용자는 터미널 어디에서나 pyenv 명령을 실행할 수 있게 됩니다.

  2. echo 'eval "$(pyenv init -)"' >> ~/.bashrc : pyenv init는 pyenv가 제대로 기능하도록 초기화하는 명령입니다. 이 명령은 pyenv를 사용하여 Python 버전을 관리할 때 필요한 환경 설정을 로드하고, 쉘의 동작을 수정합니다. eval 명령은 여기서 출력된 스크립트를 실행하며, 이는 pyenv를 사용할 때 필요한 환경 변수나 함수 등을 쉘에 설정합니다.

  3. echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc : 이 명령은 pyenv와 함께 사용되는 pyenv-virtualenv 플러그인을 초기화합니다. pyenv virtualenv-init은 가상 환경을 관리하는데 필요한 쉘 명령어들을 제공합니다. 이 스크립트를 실행함으로써 사용자는 pyenv를 사용하여 각 Python 버전별로 독립적인 가상 환경을 쉽게 생성하고 관리할 수 있게 됩니다.

5단계: 쉘 설정 적용

변경된 환경 설정을 적용하기 위해 쉘을 재시작하거나 다음 명령어를 실행합니다.

exec "$SHELL"
# or run following code
# source ~/.bashrc

6단계: PyENV 작동 확인

PyENV가 제대로 설치되었는지 확인하기 위해 다음 명령어로 PyENV 버전을 확인합니다.

pyenv --version

PyENV를 사용하여 파이썬 버전 설치

1단계: 설치 가능한 파이썬 버전 목록 확인

사용 가능한 파이썬 버전 목록을 확인합니다.

pyenv install --list # check available envs

2단계: 파이썬 버전 설치

원하는 파이썬 버전을 설치합니다. 예를 들어, 파이썬 3.8.10을 설치하고 싶다면 다음과 같이 실행합니다.

pyenv install 3.8.10 # download env

(참고) 특정 파이썬 버전 삭제

pyenv uninstall 3.8.10

💡 어? 안 지워져요?? >> 어딘가에 python이 열려있거나, global로 지정되어 있는 것입니다.

3단계: 설치된 파이썬 버전을 기본 버전으로 설정

기본적으로 default 파이썬은 시스템 상에 설치되어 있는 파이썬을 기본 파이썬으로 잡아주게 됩니다. 이번 단계에서는 설치된 파이썬 버전을 전역적으로 기본 버전으로 설정하도록 합니다.

pyenv global 3.8.10 # set global env

4단계: 내 PyENV 환경에 설치된 파이썬 버전 리스트 확인하기

pyenv versions # check installed envs

이제 PyENV를 통해 여러 파이썬 버전을 효율적으로 관리할 수 있습니다. 필요에 따라 특정 프로젝트에 대해 다른 버전을 지정하거나 가상 환경을 생성하여 프로젝트 간의 독립성을 유지할 수 있습니다.

(참고) Windows에서 PyENV 설치하기

Windows에 PyENV를 설치하기 위해서는 powershell을 관리자 모드로 실행합니다. 간단히 아래 명령어를 powershell에 입력하여 권한을 조정합니다.

# 권한조정
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine

권한을 조정

# pyenv-win 설치
Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1"

pyenv-win

# 경로확인
$env:Path
 
# pyenv 실행확인
pyenv 
 
# pyenv에서 설치가능한 python 버전리스트 update
pyenv update
pyenv install --list

다음에는 PyENV + pipENV를 활용한 환경 구축을 해보도록 해요~~!!

긴 글 읽어주셔서 감사합니다 ^^

profile
Always be passionate ✨
post-custom-banner

0개의 댓글