python(파이썬)

리눅스에서 Pyenv 사용 방법

sokki 2022. 2. 4. 14:05

이전 포스트에서는 python3 -m venv .env 명령어를 통해서 가상환경 설정하는 방법에 대해서 다뤘었다. 사실 이 방법이 좋긴하지만 문제는 server에서 root 권한 없이 작업을 해야 하는 경우, 그리고 서로 다른 버전의 파이썬을 동시에 사용해야 하는 경우에는 유용한 방법이 아니다. 

pyenv를 활용하면 서로 다른 파이썬 버전을 설치할 수 있을 뿐 아니라, 디렉토리별로 서로 다른 파이썬 환경을 설정할 수도 있다. 그럼, 설치 방법에 대해서 알아보자.

 

PATH 설정

PATH 개념에 대한 이해가 조금 필요하다.

/usr/local/bin:/usr/bin:/bin

보통 리눅스 PATH(경로)는 이런식으로 설정이 되어 있다. 이 PATH는 어떤 프로그램을 실행시킬 때 참고하는 경로라고 이해하면 될 것 같다. 왼쪽에서 오른쪽 순으로 검색이 이뤄지며 pyenv는 rehashing이라는 과정을 통해서 파이썬 명령어를 해당 디렉토리랑 매칭을 시켜준다.(사실 이 부분은 그냥 이론적인 부분이라.. 그냥 알고만 있어도 될듯) 이것은 또다른 shim 파일들을 경로에 추가해주는 것이다.

여하간 pyenv는 PATH에 shim이라는 작업을 해주게 된다.

 

Pyenv 설치 방법

OS가 다양한데, 여기서는 리눅스 환경이라고 생각하고 글을 적도록 하겠다. 다른 OS는 아래에 깃헙 주소에 들어가면 친절하게 잘 설명해놓았다.

1. 먼저 github을 cloning 해준다.

git clone https://github.com/pyenv/pyenv.git ~/.pyenv

.pyenv라는 폴더 아래에 cloning 해준다는 뜻이다.

추가적으로  cd ~/.pyenv && src/configure && make -C src 를 해줄 수 있는데, 이는 dynamic Bash extension으로 pyenv를 좀더 빠르게 사용하게 할 수 있게 해준다. 명령어가 fail해도 pyenv는 작동하니 걱정 말자.

2. pyenv를 바로 실행할 수 있게끔 설정한다.

먼저, ~/.bashrc 파일이 어떤 파일을 소스하는지 확인하자. Debian 계열은 ~/.profile을 source할 것이고, Red Hat 계열은 ~/.bash_profile을 source할 것이다. 아래 코드를 환경에 맞게 터미널에 입력해야 한다. 

############################################### Debian 계열
sed -Ei -e '/^([^#]|$)/ {a \
export PYENV_ROOT="$HOME/.pyenv"
a \
export PATH="$PYENV_ROOT/bin:$PATH"
a \
' -e ':a' -e '$!{n;ba};}' ~/.profile
echo 'eval "$(pyenv init --path)"' >>~/.profile

echo 'eval "$(pyenv init -)"' >> ~/.bashrc

############################################### Red Hat 계열
sed -Ei -e '/^([^#]|$)/ {a \
export PYENV_ROOT="$HOME/.pyenv"
a \
export PATH="$PYENV_ROOT/bin:$PATH"
a \
' -e ':a' -e '$!{n;ba};}' ~/.bash_profile
echo 'eval "$(pyenv init --path)"' >> ~/.bash_profile

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile
echo 'eval "$(pyenv init --path)"' >> ~/.profile

echo 'eval "$(pyenv init -)"' >> ~/.bashrc

3. 재시작

이제 설치 작업은 끝났다. 터미널 세션을 재시작하면 된다. 보통은 server로 재로그인 하거나 아니면 새 터미널을 열어주면 된다. 

**tip**
만일 pyenv not found가 나오면 .profile이나 .bash_profile이 안 읽혀서 그럴 수 있다. 그럴 때는 그냥 확인차 source ~/.profile 혹은 source ~/.bash_profile을 해주자. 아마 문제없이 pyenv가 불러와질 것이다. 

 

Pyenv로 python 버전 설치

pyenv install 3.8.12 # 원하는 파이썬 버전을 적어준다

이렇게 하면 원하는 파이썬 버전으로 설치가 가능하다.

 

Pyenv로 virtualenv 만들어 python 환경 activation

지금까지 pyenv를 실행하는 것에 대해 알아보았다면, 지금부터는 pyenv로 간단하게 python virtual environment를 어떻게 활성화 혹은 비활성화 하는지 알아보도록 하겠다.

먼저, pyenv-virtualenv github을 내 .pyenv/plugins로 cloning 해준다.

$ git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
# 여기서 이미 $(pyenv root)으로 설정이 되어 있다.

그리고 나서 그냥 shell을 재시작 해주면 된다.

 

가상환경 만들기

pyenv virtualenv "파이썬 버전" "가상환경 이름"

# 예를 들면
pyenv virtualenv 3.8.12 py38

pyenv 명령어 뒤에 virtualenv를 입력해주면 된다. 그럼 py38이라는 가상환경이 만들어지고 여기는 python 3.8.12가 셋팅된다. 

 가상환경을 activation 하는 것은 아래와 같다. 

# 환경 activate
pyenv activate py38

# 환경 deactivate
pyenv deactivate

 

Pyenv 가상환경 삭제

삭제하는 방법은 간단하다.

# 방법 1
pyenv uninstall py38

# 방법 2
pyenv virtualenv-delete py38

 


지금까지 pyenv에 대해서 알아보았다. 더 자세한 내용들은 아래를 참고하면 좋을 것 같다. 

 

Reference

아래 링크는 pyenv 개발 github 주소에 해당한다. 더 자세한 내용을 알고 싶다면 글을 읽어보도록 하자

pyenv 관련 github :  https://github.com/pyenv/pyenv

 

GitHub - pyenv/pyenv: Simple Python version management

Simple Python version management. Contribute to pyenv/pyenv development by creating an account on GitHub.

github.com

pyenv-virtualenv github : https://github.com/pyenv/pyenv-virtualenv

 

GitHub - pyenv/pyenv-virtualenv: a pyenv plugin to manage virtualenv (a.k.a. python-virtualenv)

a pyenv plugin to manage virtualenv (a.k.a. python-virtualenv) - GitHub - pyenv/pyenv-virtualenv: a pyenv plugin to manage virtualenv (a.k.a. python-virtualenv)

github.com