본문 바로가기
archive.tar

Python 개발 환경, 버전, 패키지 관리

by 냉동만두 2020. 9. 4.

개요


python 을 사용 하다 보면 피곤한 경우가 있다.

  • 필요한 패키지를 설치 하다보면 특정 패키지가 어디서 필요한 지 추적이 어렵다
  • 어떤 패키지를 삭제 했을때, 다른 개발 프로젝트, 앱에서 에러가 날 때가 있다
  • 서로 다른 버전이 필요한 패키지가 있다
  • python interpreter 버전별로 다르게 설치 후 전환이 귀찮다

python interpreter를 버전별로 설치가 할 수 있고,
프로젝트/앱 별로 독립된 site-package를 관리 할 수 있다면, 피곤한 경우를 해결 할 수 있다.

아래 처럼 사용이 가능 하면 좋을 것 같다.

IDE에서 로컬 파이썬 인터프리터를 지정 한다면,
파이썬 런타임 버전 변경도 비교적 쉽고 연관 패키지도 독립적인 관리가 가능 하다.
(프로젝트) -> (로컬 python interpreter, site-package) -> (Python interpreter 파일)
(글로벌 python interpreter, site-packge) -> (Python interpreter 파일)

로컬 파이썬 인터프리터가 지정 되어 있는 디렉토리로 이동 하면,
자동으로 그 버전을 사용 할 수 있도록 shell profile도 지원 해주면 좋겠다.

관련 툴을 몇개 찾아보고 주관적으로 제일 간편해서 사용중인 pyenv !

pyenv

소개


파이썬 런타임 버전부터 독립적인 패키지 관리 까지 제공 한다.
기본 Python 부터 anaconda, miniconda, pypy 등 대부분 파이썬을 설치/관리 가능하다.

https://github.com/pyenv/pyenv

설치


설치, 간단 사용법은 MacOS / brew 기준이고, ubuntu, centos도 패키지 관리자를 통하여 설치가 가능 하다.

pyenv 설치

$ brew install pyenv

shell profile 설정

$ vi ~/.bash_profile export PYENV_ROOT="$HOME/.pyenv" export 

PATH="$PYENV_ROOT/bin:$PATH" export PYTHONIOENCODING=utf8 eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
$ source ~/.bash_profile

사용


자세한 pyenv 명령어는 홈페이지를 참조 한다.

Python Interpreter 구성

파이썬 인터프리터를 구성 한다. 하나의 인터프리터로 여러개의 독립 환경 (virtualenv)를 생성 하여, 같은 파이썬 인터프리터를 사용해도 별도의 독립적인 패키지 관리가 가능 하다.

개인적으로는 글로벌 파이썬은 시스템 기본 파이썬으로 유지 하고 패키지를 설치 하지 않는 것을 좋아한다.
잠간씩 열어서 테스트 할 파이썬은 별도 디렉토리에 virtualenv를 지정 하여 사용한다.

설치 된 파이썬 인터프리터, 가상 환경 확인

$ pyenv versions

설치 가능 한 파이썬 조회

$ pyenv install --list

파이썬 인터프리터 설치

$ pyenv install 3.6.10

가상 환경(virtualenv) 구성

나중에 여기서 생성 한 가상 공간에 있는 인터프리터를 지정 하여 사용 한다.
개인적으로는 사용 할 프로젝트 디렉토리 이름과 같게 생성 하지면 여기서는 다르게 한다.
python 3.6.10 인터프리터를 사용하는 good_project_py36 이름의 가상 공간을 생성 한다.

$ pyenv virtualenv 3.6.10 good_project_py36

가상 환경 할당

프로젝트로 사용할 디렉토리로 이동 후 미리 생성한 가상 환경 할당 한다.

$ cd good_project
$ pyenv local good_project_py36

파이썬/가상환경 확인
쉘을 종료 후 다시 디렉토리로 이동 하면, 쉘 맨 앞에 할당 되어있는 가상 환경 또는 파이썬 버전이 표시된다.

(sample_env_py36) $ python --version
Python 3.6.10

가상 환경의 파이썬 바이너리 경로

할당 한 가상환경의 파이썬 바이너리 파일이 위치한 경로.
IDE에서 인터프리터 지정 할 때, 이 경로를 지정 하면 된다.

$PYENV_ROOT/versions/good_project_py36/bin/python

마무리


여기까지 정리를 하자면
python 3.6.10 인터프리터를 설치 -> python 3.6.10 인터프리터를 사용하는 good_project_py36 가상 환경 구성 -> 프로젝트에 가상 공간 할당 까지 한것이다.

이제 프로젝트별로 필요한 패키지를 설치/삭제 해도 다른 파이썬 또는 가상 환경에 영향을 주지 않는다.

eof