본문 바로가기

Information Security/Other activities

[Python] 2.x / 3.x 동시 사용 및 Library 버전 관리(requirements.txt)

반응형

* Python 2.x + 3.x 동시 설치 및 사용
- Python의 경우 2.x 버전이 특정 시점부터 업데이트 지원이 되지 않고 있으나 기존에 사용하는 프로그램 다수 2.x 버전에 종속되어 있어 함께 사용해야 되는 상황이 존재
(특히 나처럼 특정 프로그램 및 특정 라이브러리에 의존적인 사람이라면 겁나 필수적)

 

 

 

* Python 2.x / 3.x 동시 설치 방법

항목 내용
환경 조건 - Windows OS
(Linux 계는 Test 해보지 않았으나, Windows와 유사 충돌 사항은 없는 것으로 보임)
사용 방식 - python 및 pip 명령어 ⇒ 3.x 버전 사용
- python2 및 pip2 명령어 ⇒ 2.x 버전 사용
설치 방식 - Python3는 최신 버전 설치하며 환경 변수 자동 추가하도록 체크 후 적용
- Python2는 최대 지원 버전이었던 2.7.9로 설치 (x86-64 MSI Installer)

 

 

 

* 설치 완료 후 세팅 사항

  • 2.x 심볼릭 링크 설정 (명령어 형식 변경)
    • cmd 창에서 입력
      • mklink C:\Windows\python2.exe C:\python27\python.exe
        • mklink : 심볼릭 링크를 생성
        • C:\Windows\python2.exe : 이 경로에 생성
        • C:\python27\python.exe : 기존 파일의 링크
  • pip 명령어 분기 (2.x / 3.x)
    • 파이썬에서 추가 라이브러리를 설치할 수 있는 pip 명령어도 각 버전별 지정 필요
      • 3.x 버전은 초기 설치 시에 먼저 인식되어 pip 입력 시 파이썬 3.x 버전으로 연동되어 사용 가능
      • 2.x 버전은 환경 변수에서 pip2를 입력하면 2.x 버전과 연동되어 구동될 수 있게 지정 필요
        • 환경 변수 설정 (sysdm.cpl)에서 path 부분에 변수 → 편집
        • 새로 만들기 → c:\python27\Scripts 값 추가

  • 이후 CMD에서 c:\python27\Scripts 이 경로로 직접 이동
    • https://bootstrap.pypa.io/pip/2.7/get-pip.py
    • get-pip로 python 2.x의 pip 버전을 최대한 최상 버전으로 업데이트
      • 위 소스 코드를 get-pip.py로 받아서 c:\python27\Scripts 경로에 넣어줌
      • cmd에서 python2 get-pip.py 명령어를 통해 pip2 업데이트 가능
      • python3의 pip는 cmd창에서 pip install —upgrade pip로 진행

 

 

 

* 사용 Test

 

 

 

* Python Library 버전 관리

  • 본인만의 익숙한 파이썬 개발 환경이 세팅 된 후, 사용되는 버전, 라이브러리의 유지/관리에 필요한 사항
  • 해당 방식을 통해 동일 버전의 파이썬에 동일한 라이브러리 설치하는 형태로 운영도 가능
    • Anaconda, Miniconda 등의 프로그램으로 관리하는 방법도 존재
    • 여기서는 requirements.txt로 관리
  • 기존에 운영하는 시스템에서 pip list 명령어를 통해 사용 라이브러리 들의 버전 확인
  • pip list 후, pip freeze > requirements.txt 명령어로 라이브러리 버전 정보 복제 txt 파일 생성
    • 신규 시스템에 해당 txt 파일을 두고 pip install -r requirements.txt 로 동일하게 설치 가능
      • 단, Python, pip, setuptools 등의 설치 관련 툴의 버전이 동일해야 오류가 없음
      • 특정 라이브러리가 다른 라이브러리나 프로그램에 의존하는 Case는 별도 확인 및 처리가 필요 (ex. Visual C++ 특정 버전 이상 요구 or pip install --upgrade setuptools 를 통해 해결 되는 상황 등이 존재할 수 있음)

pip list로 현재 사용 Library 정보 출력

 

 

 

 

반응형