Note-Notice

➽|파이썬 버전 관리 필요성

title: Python 버전 관리 환경 구축의 필요성
  • Python
    • 서버 종속 영향도가 큰 개발언어

  • Pyenv 환경 구성
    • 파이썬의 다양한 환경/모듈을 서버종속 환경 외의 형태 활용하기 위함
      • 또한 서버 내 구성된 파이썬 환경을 변경/대체하면서 개발환경 구성이 어렵기 때문
      • 버전 2.7 / 3.6 / 3.8 간 큰 차이 발생으로 인한 호환성 문제에서
        서버 종속성을 해결하고 독립된 환경으로 구성하기 위함
    • 파이썬 버전 관리 프레임 워크를 사용!
      • PYENV/VirtualEnv/AutoEnv

    • 참고 레퍼런스

➽|파이썬 독립실행 가상환경 구축

title: PYENV -- VirtualEnv -- AutoEnv

↘ Pyenv

title: Python 가상환경 구축 핵심 프레임워크
  • 시스템 내에 여러 버전의 Python Core Engine을 설치하고 관리가능
    • Python 핵심 엔진 환경을 구축하는 용도
    • 설치된 Python Version Switch 기능 제공
  • Python 라이브러리 관리자 (PIP) 를 기반으로 동작

  • (설치) Pyenv 구성 방안
    # Env Python OS User ->> Under pyuser
    # - GitHub를 이용한 환경 구성 수행
    #   + 사전 git/curl 구성 필수
     
    #---------------------------------------------------
    #.01 필수 변수 지정 : PYENV_ROOT
      export PYENV_ROOT={PYENV_구성_경로/절대경로---.pyenv까지 경로포함}
     
    #---------------------------------------------------
    #.02 PYENV CLONE : GITHUB
      curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash #GIT_REPO
      curl -s -S -L \
      https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash #OFFICIAL
     
    #---------------------------------------------------
    #.03 PYENV 환경 변수 지정
    # - 유저 프로파일 내 아래 구문 추가(.*profile or .bashrc 선택)
     
      #-- Env : Pyenv
        export PYENV_ROOT=".pyenv 설치위치..절대경로"
        [ -z $__BASE_PATH    ] && export __BASE_PATH=$PATH
        [ -d $PYENV_ROOT/bin ] && export PATH=${PYENV_ROOT}/bin:$__BASE_PATH
     
        if command -v pyenv 1>/dev/null 2>&1
          then  eval "$(pyenv init -)" && eval "$(pyenv virtualenv-init -)"
        fi
     
    #---------------------------------------------------
    #.04 PYENV 환경 확인
      # PYENV 버전 확인 및 구축 가상환경 확인
        pyenv versions
     
      # 설치가능한 PYTHON 라이브러리 확인
      # - 해당 리스트에서 필요한 파이썬 환경 구축 설치 가능
      # - 설치 간 필요한 종속패키지 또한 자동으로 설치됨 / 인터넷 연결 필수
        pyenv install -list
     
    #---------------------------------------------------
    #.05 Python 환경 구축
    # - 사전 pyenv install -list 상의 target 환경 확인
      pyenv install {pyenv_library_name}   # TEST : miniconda3-3.7-23.1.0-1 (PY.3.7.16)
      pyenv uninstall {pyenv_library_name} # 제거시
      pyenv versions # 구축 환경 확인
     

↘ VirtualEnv/AutoEnv

title: Python 가상환경 구축 (Logical-Virtual)
  • VirtualEnv 필요성
    • 서버 종속되는 기본 Python 환경(System Distrivution Python)을 이용하지 않는 방식
    • 별도로 구성된 Python 환경(Pyenv 구성)을 이용하는 형태
      • 별도 구성 환경을 분리 실행하는 형태를 제공
      • 별도 구성된 환경을 그대로 사용할 수 있어도 모듈/버전의 변경등의 이유로
        독립된 실행 형태로 Python 환경을 이중 분리하는 용도로 구성 가능

    • 즉, 격리된 Python Library 환경 구성을 위함!
      • Pyhton Version은 별도의 독립공간을 필수로 요구
      • 프로젝트 간 버전 차이로 인한 종속성 제거를 위해 위 환경이 요구됨

  • (설치) VirtualEnv/AutoEnv 구성 방안
    # Env pyuser
    # - pyenv 내 virtualenv으로 가상환경 구축
     
    #---------------------------------------------------
    #.01 Python 가상환경 배포 검증 - 최초구성 검증
    # - local 옵션의 경우, 가상환경 전환을 수행
    # - local 옵션은 현 디렉터리의 실행 Python 환경을 PYENV POOL 째로 변경하는 것
      pyenv local {pyenv_library_name} #환경 전환 수행
      pyenv local system #기본 환경 전환(시스템 배포버전)
     
    #---------------------------------------------------
    #.02 Python 가상환경 구축 - 독립수행 환경 구성/배포
    # - 설치 구성된 PYENV POOL 중 가상환경으로 FORK 하여 구축
    # - 가상 환경 구축만 수행된 것
      pyenv local system
      pyenv virtualenv {pyenv_Library_name} {pyenv_env_name} # TEST : mini37
      pyenv virtualenv-delete {pyenv_env_name} # 가상 환경 제거시 수행
      pyenv versions # 구축 확인
     
    #---------------------------------------------------
    #.04 Python 가상환경 전환 - 환경 적용
    # - 가상 환경 실 적용 수행 / Python 환경 적용은 디렉터리 별로 적용됨(하위 디렉터리 포함)
    # - pyenv 기능상 .python-version 파일 구성에 따라 AutoEnv 기능까지 구현됨
     
      # 가상환경 구축 디렉터리 생성
      mkdir {python_env_dir} # TEST : /py/mini37
     
      # 가상환경 적용 및 확인
      cd {python_env_dir} ; pyenv local {Pyenv_env_name}
      cat .python-version
      pyenv local system # 환경 적용 제거시 수행

➽|파이썬 Conda 환경 구성

title: Python Library Framework 환경

↘ Python Conda

title: Python Library 관리자 중 하나
  • Python의 기본적/선택적 라이브러리 관리를 통합 관리하는 솔루션 존재

    • ANACONDA : Python 라이브러리 관리자 / 데이터 과학 라이브러리에 초점(PIP와 비슷)
    • CONDA ANACONDA의 경량 버전+
  • Pyenv 외로 구성/관리 필요한 라이브러리 사용을 위해 사용 가능

  • (설치) Conda 환경 구성 방안

    # Env pyuser - Conda Python 환경
    # - Conda의 내부 Python 및 라이브러리 환경 전환 가능
     
    #---------------------------------------------------
    #.01 CONDA 계열 가상 환경 구축 시
    # - pyenv virtualenv 수행 시, conda activate 필요
    #   + pyenv local 통해 conda 환경 전환 후 명령 실행
      conda activate {pyenv_env_name}
      conda list # {pyenv_env_name} 환경 존재 여부 확인
     
    #---------------------------------------------------
    #.02 CONDA 환경 구축 확인
    # - conda / python 버전 확인
      conda  -V    # conda 버전 확인
      python -V    # conda 구성 Python 버전 확인
      conda  info  # conda 구성 환경 확인
      conda  list  # conda 가상 환경 확인
     
    #---------------------------------------------------
    #.02 CONDA 배포 가능 PYTHON 확인 및 설치
    # - conda는 python 라이브러리 관리용
    # - 필요한 Python 버전 확인 및 변경 가능
      conda search python             # CONDA 사용 가능 PYTHON 버전 확인
      conda install python={VERSION}  # CONDA PYTHON VERSION 변경
      python -V 변경 후 확인
     
    #---------------------------------------------------
    #.03 CONDA 배포 가능 추가 라이브러리 설치
    # - Python 추가 라이브러리 구성
      conda search django               # Python 버전에 맞는 Django 버전 확인
      conda install django={VERSION}    # 버전에 맞는 라이브러리 설치
      django-admin version
     
      conda serach cx_oracle            # Python 버전에 맞는 cx_oracle 최신 버전 확인
      conda install cx_oracle={VERSION} # 버전에 맞는 라이브러리 설치
      mkdir test
      printf "import cx_Oracle\nprint(cx_Oracle.version)" > ./test/ch-cx_oracle.py
      python test/ch-cx_oracle.py