11강 개발 환경과 패키지 관리

Han Hanju·2022년 5월 8일
0
post-thumbnail

11.1 가상환경 - 격리된 파이썬 실행 환경

  • 각 프로젝트마다 다른버전의 라이브러리가 필요하다. -> 가상환경으로 구분이 필요

11.1.1 venv - 가상 환경 생성 도구

  • 두가지 프로젝트를 만든다
      1. hobby: 장고 3.0.1
      1. work: 장고 2.2.9
  • venv모듈이 만드는 가상환경이란, 실행할 파이썬 인터프리터나 설치한 패키지를 하나의 디렉터리에 모아둔것을 의미

venv의 구조

  • PATH를 치환하는 단순한 구조
  • venv/bin 디렉터리를 PATH앞에 추가.
    • 이 디렉터리 명령어를 가장 우선적으로 사용

가상 환경 활성화 및 비활성화

가상 환경 안에서의 python 명령어

  • 모두 가상환경의 bin/ 안에있는 파일을 사용

가상 환경 안에서의 패키지 이용

  • 가상환경에 패키지 추가설치
    • 장고 3.0.1설치
  • 비활성화 후 가상과 다른 pip list확인 할 수 있음.

여러 프로젝트를 동시에 개발

  • work의 경우 Django 2.2.9 환경을 준비
  • 전체 디렉터리 구조
  • 가상환경 삭제
    • 디렉터리 삭제

11.2 패키지 이용

  • 패키지: 프로그램을 모아 배포 할수 있도록 한것 (라이브러리)

1. pip - 패키지 관리도구

  • 기본사용법
    • pip install 명령어 사용
  • 패키지 설치
    • 버전 지정 않하면 최신버전 설치
    • 의존된 패키지도 함께 설치
  • 패키지 제거
    • pip uninstall
    • 연관된 패키지는 삭제하지 않는다.
  • PyPI - 파이썬 패키지 저장소
    • pip install시 PyPI로 부터 다운된다.
    • 전세계 사용자에게 배포도 가능.
  • 소스 코드 저장소에 있는 패키지 설치하기
  • 로컬에 있는 패키지 설치하기
    • 직접 다운로드하여 pip install -e . 로 설치
      • Editable모드로 설치되며 코드 변경 내용을 즉시 반영함
      • 로컬에서 설치
  • 설치된 패키지 업데이트 하기
    • --upgrade 옵션
  • 현재 사용자용으로만 설치하기

2. 환경 저장과 재현 - requirements파일 활용

  • requirements 파일에 현재 환경 정보 저장
  • requirements 파일에서 환경 재현
  • 개발 환경에서만 이용하는 패키지 관리
    • requirements_dev.txt 사용
  • 의존 패키지 업데이트
    • pip 명령어는 더이상 필요없는 패키지를 지워주지는 않는다.
    • 오래된 환경 삭제 후 새로운 환경으로 다시 pip install 권장

11.3 패키지 작성

  • 패키지 작성 후 PyPI에 배포
    • setup.py로 패키징 정보를 얻는다.

1. setup.py - 패키지 정보를 모아둔 파일

  • 파이썬 프로그램 한 세트를 패키지로 모아두기 위한 스크립트로 패키징 관련 명령어도 제공
  • 패키지 디렉터리 구성
    • 확장성을 위해 한단어로 설정 권장
  • setup.py 기본
    • name: 패키지 이름
    • version: 패키지 버전
    • packages: 이 패키지에 포함되는 파이썬 패키지 이름의 리스트
      • setuptools 오타임
  • PyPI에 등록 고려하기
    • README.md, LICENSE.txt, MANIFEST.in 세개파일을 추가
  • 의존 패키지 고려하기
    • install_requirments: 패키지 설치시 부족한 의존 패키지를 함께 설치
    • extras_requirements: 특정 기능에서만 사용한 패키지를 기술
  • .py 이외의 파일 고려하기

2. PyPI에 패키지 등록

  • 다른 사람도 사용 가능하게 배포
  • PyPI계정 작성
  • 배포물 작성
    • wheel형식이 빠르고 의존성이 적으므로 wheel형식으로 압축
    • 몬조 sdist명령어로 tar,gz파일 생성
    • wheel설치 및 wheel형식으로 변환
  • 배포물 업로드
  • testPyPI에 우선 업로드
  • 이슈 확인 후 PyPI에 업로드
profile
Data Analytics Engineer

0개의 댓글