본문 바로가기
대학원 공부/programming language

Python : module, package, library, framework

by 월곡동로봇팔 2020. 3. 11.

module vs package

예시 - keras

__init__.py (./keras)

from __future__ import absolute_import

from . import utils
from . import activations
from . import applications
from . import backend
from . import datasets
from . import engine
from . import layers
from . import preprocessing
from . import wrappers
from . import callbacks
from . import constraints
from . import initializers
from . import metrics
from . import models
from . import losses
from . import optimizers
from . import regularizers

# Also importable from root
from .layers import Input
from .models import Model
from .models import Sequential

__version__ = '2.3.1'

요즘 많이쓰는 keras를 가져와서 package가 어떤 형식으로 운영이되는지를 파악하려한다.

 

위는 keras에서 ./keras 경로에 포함되어있는 __init__.py 파일이다.

 

__init__.py의 역할은 현재 그 폴더를 code, 즉 module들을 모으는 작업인 package화 하기 위해 쓴다.

(module은 )

__init__.py (./keras/preprocessing)

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

from .. import backend
from .. import utils

import keras_preprocessing

from . import image
from . import sequence
from . import text

위는 keras에서 ./keras/preprocessing 경로에 포함되어있는 __init__.py 파일이다.

 

이렇게 하나하나 적혀있는 code들을 module이라고 한다.

또한 __init__.py를 쓰면, (3.3 버젼 이후로는 안 써도 인식이 가능..) 그 폴더는 더이상 resource 파일이 아니라, module들을 묶는 하나의 package이다.


library vs framework

https://engkimbs.tistory.com/673

 

프레임워크(Framework)? 라이브러리(Library)? 둘의 차이점? 이것만 알면 됩니다.

막 프로그래밍을 배우기 시작했거나 프로그래밍을 모르는 분들에게 저 두 개념은 아주 헷갈리는 개념일 것입니다. 사실 어느정도 숙달된 프로그래머라도 일반인에게 저 두 개념을 쉽고 확실하게 설명하는 것은 솔..

engkimbs.tistory.com

여기 글에서 잘 설명 되어있다.

 

library

도구의 모음이다. Python에서 Datetime, Pandas, Beautifulsoup ..., Java에서는 Guava, Apache common library, ... C++ 에서는 STL 등등 소프트웨어의 개발을 쉽게 하기 위한 도구들이 많이 있다.

code를 짜는데 특성에 맞게 하나의 필요한 도구들로 모아놓은 것을 라이브러리라고 한다.

 

framework

틀에 갖춰서 동작을 하다 라는 뜻이다. Spring, Django, Ruby on Rails 등등이 존재하고, 딥러닝 프레임워크는 Tensorflow, Keras, Pytorch, MNet 등등이 존재한다.

아래는 딥러닝 프레임워크를 정리해놓은 기사이다.

https://www.epnc.co.kr/news/articleView.html?idxno=91752

 

Do you develop AI? 딥러닝 프레임워크 6선 - 테크월드

[테크월드=이건한 기자] 바야흐로 인공지능(AI)의 시대다. 이젠 어느 기업에서나 자사의 서비스와 기기에 AI를 접목했다고 말하곤 한다. 물론 그 수준이야 제각각이지만 확실히 AI가 적용된 제품의 사용성은 이전...

www.epnc.co.kr


따라서 우리는 Framework를 사용하면서 라이브러리를 통해 부족한 부분을 보충하면서 code를 모듈화 하고 이러한 모듈들을 package로 만드는 것이 중요하다.

댓글