본문 바로가기
프로그래밍 ( Programming )/Python

[Python] 모듈(Module)과 패키지(Package) 의미 정리

by Jayce_choi 2021. 11. 24.
반응형

파이썬을 다룰 때 모듈(Module)과 패키지(Package)라는 단어들을 자주 접하게 됩니다. 이번 글에서는 해당 단어들의 의미를 살펴보도록 하겠습니다.

1. 모듈 (Module) 

먼저 모듈입니다. 모듈은 그대로 해석을 하면 '구성단위'입니다. 
IT 영역에서 본체에 대한 독립된 하위 단위라고도 할 수 있는데요
모듈을 이용하면 예를 들어서 복잡하고 줄이 긴 코드를 작성할 때 사용 용도에 따라서 파일로 구분하여 다른 파일에서 해당 클래스나 함수가 필요할 시 가져와서 사용이 가능하도록 해주는데 이러한 기능을 하는 클래스나 함수 등을 모듈이라고 부릅니다.  

파이썬에서는 전역 변수 및 함수 등을 모아둔 파일입니다. 

 

간단한 예제를 통해서 설명드리겠습니다. 

1-1. 모듈 만들어보기 

* 개발 환경은 Pycharm을 이용하였습니다. 

먼저 모듈을 만들어보도록 하겠습니다. 이름은 test이며 2개의 함수를 가지고 있습니다.  

1-2. 모듈 사용해보기 

모듈을 사용하기 위해서는 import 명령어와 더불어 모듈 이름을 기입해줘야 합니다. 그리고 메인. py의 코드를 다음과 같이 기입을 합니다. import 명령어를 통해서 미리 작성해둔 test 모듈을 가져올 수 있었으며 test 모듈 내부에 담긴 기능들을 사용 가능해져서 test 내부의 civil 및 batman 함수를 사용할 수 있었습니다. 

실행하면 내부 함수의 기능이 충실히 수행된 것을 관찰할 수 있었으며 예제와 같이 하나의 모듈을 불러와서 내부의 기능들을 사용을 할 수 있었습니다. 모듈은 단일로도 사용이 가능하지만 이처럼 다른 곳에서 사용이 가능하기도 합니다. 

 

 

2. 패키지 (Package)

패키지는 이러한 모듈들의 집합이라고 할수 있습니다. 모듈이 하나의 파이썬 파일이라고 할 때 패키지는 이러한 파이썬 파일들을 한꺼번에 포함하고 있는 디렉터리입니다. 
파이썬에서의 패키지는 일반 디렉터리와 구분을 짓기 위해서 디렉터리 내부에 _init_. py 파일을 포함하고 있습니다. 때문에 어떤 특징 디렉터리가 여러 개의 파이썬 파일들을 포함하고 있더라도, _init_. py 파일을 가지고 있지 않다면 그것은 그냥 디렉터리에 불과합니다. 

정리하면 패키지는 모듈을 디렉터리 형식으로 구조화한 것입니다. 즉 큰 프로젝트를 수행할 때 모든 모듈을 한 디렉터리 안에다가 보관하기보다는 계층적으로 구성하여 패키지별로 관리하는 것이 편리하고 효율적입니다. 

 

2-1. 패키지 만들고 이용해보기 

다음과 같이 상위폴더에 오른쪽 클릭을 수행하여 new->python package를 선택합니다. 패키지 이름을 정해주고 저는 TestforPackage이라는 이름을 붙여주었습니다.

그 후 다음과 같이 Test라는 모듈을 하나 패키지에 만들어주고 내용은 위의 사진과 같이 간략하게 작성하였습니다. 

이제 패키지를 이용하기 위해서 메인. py 파일에 import를 해주어야 합니다. 

위의 사진처럼 import 명령어를 통해서 먼저 패키지 이름을 적어줍니다. 그리고 패키지 안에 들어있는 모듈을 선택하기 위해서.(점)을 입력하면 다음과 같이 패키지 내부에 존재하는 Test 모듈이 보이며 선택하고 작성을 완성해주시면 되겠습니다. 

그리고 내부의 함수를 이용하는데 import 옆에 이름이 너무 길기 때문에 as Test를 이용하여 간략하게 표현해주었으며 덕분에 메인문에서 다음과 같이 Test만 입력해도 Test.py 내부에 존재하는 함수인 goPrint를 선택할 수 있었습니다. 

 

2-2. 외부 패키지 import 해보기. 

패키지가 설치되었다고 바로 이용을 할 수가 없습니다. 위에 모듈처럼 사용을 위해서 import를 해줘야 합니다. 파이썬에서 선형대수 라이브러리로 유명한 넘 파이 라이브러리를 한번 import 해보는 예제를 적어보겠습니다.  

상단에 numpy를 import 해주는 코드가 있으며 dir(np) 명령어를 통해서 임포트 된 패키지 안의 내용을 살펴볼 수가 있습니다. terminal에서 확인을 해보면 ALLOW_THREADS부터 시작해서 다양한 함수들을 볼 수 있습니다. 

 

2-3. 패키지에 포함된 함수 이용해 보기 

함수를 이용하기 위해서는 패키지 이름과 같이 마침표를 이용하여 패키지안에 들어있는 함수를 사용하면 되겠습니다.

 

* 추가적으로 선택적인 임포트도 가능합니다. 

from 패키지 이름 import 명령어 

또는 from 패키지이름 import 명령어 1, 명령어 2, 명령어 3과 같이 필요한 함수만 가져와서 사용이 가능합니다. 

선택적 import를 통해서 다음과 같이 np.arrange가 아닌 arrange만 기입하여 함수를 이용할 수가 있습니다. 

반응형

댓글