Skip to content

Pyenv

Simple Python Version Management: pyenv.

How to install

Simple usage

pyenv versions  ## 설치된 버전 목록
pyenv install --list  ## 설치 가능한 버전 목록
pyenv install 3.9.11  ## 3.9.11 버전 설치
pyenv uninstall 3.9.11  ## 3.9.11 버전 삭제
pyenv virtualenv 3.9.1 py39  ## 3.9.11 버전을 기반으로 py39 라는 가상환경 설치 (`pyenv install 3.9.11` 이 선결되어야 한다)

Commands

서브 명령

설명

local

현재 디렉터리에 python 버전 확인 및 python 버전 지정

global

전역으로 설정된 python 버전

shell

shell에 파이썬 버전을 지정

install

python-build를 이용하여 파이썬 버전을 설치

uninstall

지정한 버전의 파이썬을 삭제

version

현재 활성화된 파이썬 버전 출력

versions

pyenv로 설치되어 이용 가능한 버전을 출력

which

활성화된 파이썬 명령의 위치 출력

whence

지정한 명령을 포함하는 모든 파이썬 버전 출력

Mac OSX

Mac OSX에서 brew를 통해, 아래와 같이 설치할 수 있다.

$ brew update  
$ brew install pyenv  

만약, brew로 설치된 pyenv 루트 디렉토리(참고로, 기본 디렉토리는 ~/.pyenv이다.)를 사용할 경우 프로파일에 아래와 같이 추가해야 한다.

export PYENV_ROOT=/usr/local/var/pyenv

아래의 내용을 프로파일에 추가하면 완료된다.

if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi

물론 바로, 위 환경을 적용하고 싶다면 아래와 같이 프로파일을 불러와야 한다.

$ source ~/.bash_profile

확인!

만약, pip를 사용한 패키지 의존성까지 관리하고 싶다면 virtualenv를 설치해야 한다.

How to build CPython with Framework support on OS X

$ env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install 3.5.0

How to build CPython with --enable-shared

$ env PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install 3.5.0

How to use

아래의 명령으로 설치할 수 있는 파이선 목록을 확인할 수 있다.

$ pyenv install --list

INFORMATION

파이썬 최신 버전이 없다면 ~/.pyenv로 가서 git pull 하자.

그리고 위에서 확인한 버전명을 입력하면 설치할 수 있다.

$ pyenv install 2.7.11

지금 사용하는 Python 버전을 확인하고 싶을 경우 아래와 같이 입력한다.

$ pyenv version
system (set by /Users/your/.pyenv/version)

참고로 system으로 출력될 경우, 시스템에 설치된 Python을 사용하고 있다는 의미이다.

현재 설치된 파이선 버전을 전부 보고싶다면 아래와 같이 입력한다.

$ pyenv versions
* system (set by /Users/your/.pyenv/version)
  2.7.11

Virtual Environment를 생성한다:

$ pyenv virtualenv 3.9.11 answer-python3

그리고 활성화 해준다:

$ pyenv activate answer-python3

비활성화 방법:

$ pyenv deactivate

pip를 실행하여 패키지 목록을 확인해 보자.pip와 setuptools만 있어야 한다.

$ python3 -m pip list

Update bash profile

정확한 내용은 사이트 참조. 아래 내요은 참고용으로 사용.

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

Troubleshooting

no such command shell

shell명령을 찾을 수 없다1는 에러가 발생한다면 아래의 명령을 적용해야 한다.

$ eval "$(pyenv init -)"

The Python ssl extension was not compiled. Missing the OpenSSL lib?

If you have homebrew openssl and pyenv installed, you may need to tell the compiler where the openssl package is located:

CFLAGS="-I$(brew --prefix openssl)/include" \
LDFLAGS="-L$(brew --prefix openssl)/lib" \
pyenv install -v 3.4.3

pyenv: shell integration not enabled. Run `pyenv init' for instructions

다음과 같은 에러가 발생될 경우 대처할 수 있는 방법을 정리한다.

pyenv: shell integration not enabled. Run `pyenv init' for instructions.

1. 만약 다음과 같은 코드가 ~/.bash_profile 안에 없다면 추가한다.

export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

2. 스크립트로 통합할 경우 which를 사용하여 변수로 할당한 후 명령을 실행할 수 있다.

PYENV_EXE=$(which pyenv 2> /dev/null)
eval $("$PYENV_EXE" init -)

위와 같이 사용할 경우 PATH 환경변수 Export 타이밍

PYENV_ROOT="$("$PYENV_EXE" root)"
PATH="$PYENV_ROOT/bin:$PATH"

export PYENV_ROOT
export PATH

이후 부터 "$PYENV_EXE"를 사용하지 말고 pyenv로 사용해야 한다.

eval $(pyenv init -)

eval 명령을 사용함에 따라 사용하는 경로 등이 꼬여서 위와 같은 에러가 출력될 수 있다.

prompt changing will be removed from future release

Virtualenv#prompt changing will be removed from future release 항목 참조.

간단히, pyenv-virtualenv의 환경이 바뀌어서 나타나는 현상. 바꾸지 말자.

Local Download

Pyenv-a8664a2.tar.gz
Latest commit a8664a2
Download: 2016-05-04

See also

  • pyenv: Python 버전 관리.
  • Virtualenv: Python 패키지 의존성 관리.
  • autoenv: 자동 환경(Environments) 설정.
  • venv: Python venv

Favorite site

References


  1. pyenv: no such command 'shell' 

  2. Pyenv_virtualenv_autoenv_-_Python_dev_env.pdf