CS 지식

모듈, 패키지, 라이브러리, 프레임워크란?

Nowon9159 2023. 7. 5. 11:16
반응형

모든 설명의 기준은 파이썬 기준으로 하는 게 설명이 편할 것 같다.

프로세스를 단순화하고 더 효과적으로 만들기 위해 개발자는 대규모 코딩 작업을 더 작고 관리하기 쉬운 하위 작업으로 나누는 방법인 모듈식 프로그래밍을 활용하는데, 이것이 Python에 많은 모듈, 패키지, 라이브러리 및 프레임워크가 있는 이유이다.

 

모듈

정의

  • 모듈이란 .py 파일 하나하나를 의미한다. 예를 들어 날씨 데이터를 이용해 지도로 날씨 데이터를 표기한다고 했을 때main.py, weather.py, map.py 등으로 파일을 하나하나 나누고 main.py에서 각 python 파일들을 불러온다고 생각해보자. 그렇다면 weather.py, map.py 파일들이 모듈인 것이다.
  • 즉, 모듈이란 파일 자체로도 실행 가능하고, 불러와서 변수,함수,클래스 등을 활용할 수도 있는 단위라고 생각하면 편할듯하다. 

 

예시

  • random
  • datetime

 

패키지

정의

  • 패키지는 모듈만으로 개발을 하는 것이 관리적 측면에서 어려워 모듈들을 그룹화 하고 조직화한 모듈 모음이라고 보면 될것같다.
  • 기능적으로 유사한 모듈들을 모아놓은 것이라고 봐도 된다.
  • 보통 계층(폴더) 구조로 __init__.py 파일을 이용해 각 폴더를 인식합니다.
  • 패키지 하위에는 패키지가 들어가기도 한다.

https://learnpython.com/blog/python-modules-packages-libraries-frameworks/

 

예시

  • numPy
  • pandas

 

라이브러리

정의

  • 모듈이 main.py를 구성하는 단위라고 생각하면 라이브러리는 이런 모듈이 잘 작동할수 있고, 모듈을 편리하게 작동하기 위한 코드들의 집합이라고 생각하면 된다. 또한 패키지는 모듈의 모음인 반면 라이브러리는 패키지의 모음이라고 가정하는 경우가 많다.(물론 100% 그렇다는 것은 아님) 
  • 또 다르게는 재사용 가능한 코드 덩어리를 가리키는 포괄적인 용어로 사용하기도 한다. 
  • 예를 들면 weather.py와 map.py를 연동해서 지역 별 날씨 데이터를 간단한 img 파일로 표시 해주는 라이브러리가 이미 구성되어 있을 때 개발자는 라이브러리를 불러와 이미 구성되어 있는 weather class 와 map class 를 라이브러리를 이용하여 연동하게 될수도 있을 것 같다.

 

예시

  • pygame
  • pyTorch

 

프레임워크

정의

  • 라이브러리와 비슷하게 프레임워크는 프로그래머가 개발 프로세스를 빠르게 진행하는 데 도움이 되는 모듈 및 패키지 모음이다. 허나 프레임워크는 일반적으로 라이브러리보다 더 복잡하다.
  • 프로그래머가 원하는 기능을 개발할 수 있도록 일정 형태와 기능을 갖춘 뼈대라고 생각하면 된다.
  • 프레임워크는 응용 프로그램의 기본 흐름과 아키텍처가 포함 되어 있다.
  • 예를 들어 주택을 구축한다고 가정했을 때 라이브러리는 설계도, 골조, 벽, 창 및 지붕 등의 세세한 부분까지 신경 써 건설해야하지만 프레임워크를 사용하게 되면 세세한 부분은 이미 구축 되어 있고 집의 가구 배치, 가전 제품 등등만 신경쓰면 된다.

 

예시

  • Django
  • Flask
  • FastAPI

 

 

 

[참조] : 

https://blckchainetc.tistory.com/entry/%EB%AA%A8%EB%93%88-vs-%ED%8C%A8%ED%82%A4%EC%A7%80-vs-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-vs-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC

https://etloveguitar.tistory.com/138

https://learnpython.com/blog/python-modules-packages-libraries-frameworks/

반응형