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는 각 프로젝트별로 독립적인 파이썬 환경을 설정할 수 있도록 도와줍니다. 이를 통해 서로 다른 의존성을 가진 프로젝트가 서로 영향을 미치지 않고 독립적으로 작동할 수 있습니다.
간편한 버전 전환: PyENV를 사용하면 커맨드 라인 명령어를 통해 쉽게 파이썬 버전을 전환할 수 있습니다. 이는 개발 중에 특정 파이썬 버전으로의 테스트를 빠르게 수행할 수 있게 해줍니다.
호환성 테스트: 다양한 파이썬 버전에서 애플리케이션을 테스트하고 싶을 때 PyENV는 이를 간편하게 만들어 줍니다. 이는 소프트웨어가 다양한 환경에서도 제대로 작동하는지 보장하는 데 중요합니다.
시스템 파이썬과의 독립성: PyENV는 시스템에 사전에 설치된 파이썬에 의존하지 않고 작동합니다. 이는 시스템 파이썬을 변경하거나 업그레이드하지 않고도 새로운 버전의 파이썬을 시험해 볼 수 있게 해줍니다.
PyENV는 사용자의 홈 디렉토리에 .pyenv
라는 디렉토리를 생성하고, 여기에 여러 버전의 파이썬을 설치합니다. 이후 환경 설정을 통해 PATH
환경 변수에 이 디렉토리를 추가하여, 터미널에서 파이썬을 실행할 때 PyENV가 관리하는 버전을 우선적으로 사용하도록 합니다. 또한, pyenv init
명령을 사용하여 쉘을 구성하고, 파이썬 버전을 쉽게 전환할 수 있는 환경을 제공합니다.
PyENV는 파이썬 버전 관리뿐만 아니라 pyenv-virtualenv
플러그인을 통해 각 버전에 대한 가상 환경도 관리할 수 있어, 개발자의 작업을 더욱 효율적으로 만들어 줍니다. 이러한 기능 덕분에 PyENV는 파이썬 개발자들 사이에서 필수적인 도구로 자리잡고 있습니다.
PyENV를 설치하고 설정하는 과정은 여러 단계로 나누어집니다. 이 과정을 통해 여러 파이썬 버전을 쉽게 관리하고 필요에 따라 버전을 전환할 수 있습니다. 아래에서는 우분투 시스템을 기준으로 PyENV를 설치하고 환경을 설정하는 단계별 방법을 설명합니다.
✍️ 아래는 LINUX 시스템을 기저로 설명하고 있습니다. PyENV를 Windows에 설치하는 방법은 본 글 가장 마지막 장에서 설명하도록 하겠습니다.
설치 전에 시스템 패키지 목록을 최신 상태로 업데이트합니다.
sudo apt update -y
PyENV 설치에 필요한 기본 도구들을 설치합니다.
sudo apt install -y curl make build-essential libreadline-dev zlib1g-dev libbz2-dev libsqlite3-dev libssl-dev
curl
을 사용하여 PyENV 설치 스크립트를 다운로드하고 실행합니다. 이 스크립트는 PyENV와 함께 필요한 모든 플러그인을 설치합니다.
pyenv Github
: https://github.com/pyenv/pyenvcurl https://pyenv.run | bash
사용자의 홈 디렉토리에 위치한 ~/.bashrc
파일에 다음과 같이 환경 설정을 추가합니다. 이 설정은 PyENV가 시스템에 통합되어 작동하도록 도와줍니다.
echo 'export PATH="${HOME}/.pyenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
echo 'export PATH="${HOME}/.pyenv/bin:$PATH"' >> ~/.bashrc
: 이 명령은 pyenv 실행 파일이 위치한 디렉토리를 시스템의 PATH 환경 변수에 추가합니다. PATH는 쉘에서 실행 가능한 명령어들을 찾을 때 참조하는 디렉토리의 목록을 포함하고 있습니다. ${HOME}/.pyenv/bin을 PATH에 추가함으로써, 사용자는 터미널 어디에서나 pyenv 명령을 실행할 수 있게 됩니다.
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
: pyenv init는 pyenv가 제대로 기능하도록 초기화하는 명령입니다. 이 명령은 pyenv를 사용하여 Python 버전을 관리할 때 필요한 환경 설정을 로드하고, 쉘의 동작을 수정합니다. eval 명령은 여기서 출력된 스크립트를 실행하며, 이는 pyenv를 사용할 때 필요한 환경 변수나 함수 등을 쉘에 설정합니다.
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
: 이 명령은 pyenv와 함께 사용되는 pyenv-virtualenv 플러그인을 초기화합니다. pyenv virtualenv-init은 가상 환경을 관리하는데 필요한 쉘 명령어들을 제공합니다. 이 스크립트를 실행함으로써 사용자는 pyenv를 사용하여 각 Python 버전별로 독립적인 가상 환경을 쉽게 생성하고 관리할 수 있게 됩니다.
변경된 환경 설정을 적용하기 위해 쉘을 재시작하거나 다음 명령어를 실행합니다.
exec "$SHELL"
# or run following code
# source ~/.bashrc
PyENV가 제대로 설치되었는지 확인하기 위해 다음 명령어로 PyENV 버전을 확인합니다.
pyenv --version
사용 가능한 파이썬 버전 목록을 확인합니다.
pyenv install --list # check available envs
원하는 파이썬 버전을 설치합니다. 예를 들어, 파이썬 3.8.10을 설치하고 싶다면 다음과 같이 실행합니다.
pyenv install 3.8.10 # download env
기본적으로 default 파이썬은 시스템 상에 설치되어 있는 파이썬을 기본 파이썬으로 잡아주게 됩니다. 이번 단계에서는 설치된 파이썬 버전을 전역적으로 기본 버전으로 설정하도록 합니다.
pyenv global 3.8.10 # set global env
pyenv versions # check installed envs
이제 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"
# 경로확인
$env:Path
# pyenv 실행확인
pyenv
# pyenv에서 설치가능한 python 버전리스트 update
pyenv update
pyenv install --list
다음에는 PyENV + pipENV를 활용한 환경 구축을 해보도록 해요~~!!
긴 글 읽어주셔서 감사합니다 ^^