[파이썬] Python 패키지(Package), 모듈(Module) 개념 및 예제 : 패키지, 모듈 생성 및 불러오는 방법(import)

[파이썬] Python 패키지(Package), 모듈(Module) 개념 및 예제 : 패키지, 모듈 생성 및 불러오는 방법(import)

파이썬에서 패키지(Package)란 라이브러리와 동일합니다. 패키지는 모듈(Module)들의 집합이라고 생각하면 이해하기 쉽습니다. 아래 샘플 코드 스니펫을 보면 from functools import reduce 문장이 있습니다. functools가 패키지가 됩니다. 그리고 그 패키지안에 여러 모듈 중에 reduce라는 모듈만 사용하기위해 import하고 있습니다.

그럼 모듈은 무엇을 의미할까요? 메소드, 변수 또는 클래스를 모아 놓은 파일입니다. 개발자들은 파이썬 내부적으로 지원하는 모듈과 그리고 혹은 누군가 만들어놓은 모듈이나 패키지를 가져와 코딩을 쉽게 할 수 있게 됩니다. 내가 원하는 기능을 지원하는 모듈이 없다면 직접 만들어 사용하면 됩니다. 


>>> from functools import reduce

파이썬 패키지(Pacakge)만들기

custompackge 패키지를 만들고 아래 코드 스니펫과 같은 샘플 모듈 2개를 만들어봅니다.

제일 먼저 프로젝트 폴더 아래 패키지이름으로 사용할 폴더로 custompackage 폴더를 생성합니다.

그리고 그 안에 아래 2개의 모듈을 각각 저장합니다.

#…\custompackage\calculator.py

def calPlus(a,b):
    return a + b

def calMinus(a,b):
    return a - b

#…\custompackage\autoprint.py

import calculator
def sampleprint() :
    print ("20+30 =", calculator.calPlus(20,30))

custompackage 폴더 안에 __init__.py 파일이 있으면 해당폴더를 패키지로 인식합니다.

__init__.py 파일 내용은 비워둘 수 있습니다.

파이썬 3.3 버전 이상부터는 __init__.py 파일이 없어도 패키지로 인식됩니다.

만약 파이썬 3.3 미만의 하위 버전에도 호환되도록 하는 패키지를 만들경우 반드시 필요합니다.

저는 3.9.0 버전의 파이썬을 사용함으로 __init__.py 파일 생성은 배제합니다.

C:\python\script\custompackage>dir
 C 드라이브의 볼륨에는 이름이 없습니다.
 볼륨 일련 번호: 1C02-20EB

 C:\python\script\custompackage 디렉터리

2020-12-01  오전 11:20    <DIR>          .
2020-12-01  오전 11:20    <DIR>          ..
2020-12-01  오전 11:19                88 autoprint.py
2020-12-01  오전 10:53                75 calculator.py
2020-12-01  오전 11:21    <DIR>          __pycache__
               2개 파일                 163 바이트
               3개 디렉터리  27,576,418,304 바이트 남음

C:\python\script\custompackage>cd ..

C:\python\script>python
Python 3.9.0 (tags/v3.9.0:9cf6752, Oct  5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>>
>>> from custompackage import autoprint
>>> autoprint.sampleprint()
20+30 = 50
>>>

아래와 같은 방법으로도 각각 패키지의 모듈만 import 할 수 있습니다.

>>> import custompackage.autoprint
>>> import custompackage.calculator
>>>
>>> autoprint.sampleprint()
>>> custompackage.autoprint.sampleprint()
20+30 = 50
>>>
>>> a = custompackage.calculator.calMinus(20,30)
>>> print(a)
-10
>>>
 

파이썬 모듈 만들기

아래 코드 스니펫과 같이 두 개의 메소드를 만든 후 calculator.py로 저장하였습니다. 파이썬에서 확장자 .py로 작성한 파일은 모두 모듈입니다.

def calPlus(a,b):
    return a + b

def calMinus(a,b):
    return a - b

저장위치는 C:\python\script 경로에 저장하였습니다. 이 경로에서 파이썬 프로그램을 실행 후 import해야합니다. 그렇지 않으면 calculator.py를 읽어올 수 없습니다.

C:\python\script>
C:\python\script>dir
 C 드라이브의 볼륨에는 이름이 없습니다.
 볼륨 일련 번호: 1C02-20EB

 C:\python\script 디렉터리

2020-12-01  오전 10:53    <DIR>          .
2020-12-01  오전 10:53    <DIR>          ..
2020-12-01  오전 09:54    <DIR>          .vscode
2020-12-01  오전 10:53                75 calculator.py
2020-12-01  오전 09:54                62 first_test.py
2020-11-30  오후 02:55               136 hello.py
               3개 파일                 273 바이트
               3개 디렉터리  27,585,150,976 바이트 남음

C:\python\script>python
Python 3.9.0 (tags/v3.9.0:9cf6752, Oct  5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>>
>>>
>>> #내가 만든 모듈 불러오기
>>> import calculator
>>> a = calculator.calPlus(10,3)
>>> print(a)
13
>>>

내가 만든 모듈이나 패키지를 매번 사용할 때마다 해당 폴더로 이동 후 파이썬을 실행해야한다면 너무 불편하다.  파이썬 sys.path에 추가하면 해결할 수 있습니다. sys.path.append()를 사용하여 sys.path에 추가합니다.

>>> import sys
>>> sys.path
['', 'C:\\Users\\ilike\\AppData\\Local\\Programs\\Python\\Python39\\python39.zip'
, 'C:\\Users\\ilike\\AppData\\Local\\Programs\\Python\\Python39\\DLLs'
, 'C:\\Users\\ilike\\AppData\\Local\\Programs\\Python\\Python39\\lib'
, 'C:\\Users\\ilike\\AppData\\Local\\Programs\\Python\\Python39'
, 'C:\\Users\\ilike\\AppData\\Roaming\\Python\\Python39\\site-packages'
, 'C:\\Users\\ilike\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages']
>>>
>>> sys.path.append("C:\python\script")
>>> sys.path
['', 'C:\\Users\\ilike\\AppData\\Local\\Programs\\Python\\Python39\\python39.zip'
, 'C:\\Users\\ilike\\AppData\\Local\\Programs\\Python\\Python39\\DLLs'
, 'C:\\Users\\ilike\\AppData\\Local\\Programs\\Python\\Python39\\lib'
, 'C:\\Users\\ilike\\AppData\\Local\\Programs\\Python\\Python39'
, 'C:\\Users\\ilike\\AppData\\Roaming\\Python\\Python39\\site-packages'
, 'C:\\Users\\ilike\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages'
, 'C:\\python\\script']
>>>

파이썬 패키지 및 모듈 불러오기 (Import)

파이썬에서 임포트 하는 방법은 두 가지가 있습니다.

첫번째 방법 : import 모듈이름

>>> import functools
>>> reduce(lambda x,y: x+y, [1,2,3,4,5])
15
>>>

두번째 방법 : from 패키지이름 import 모듈이름

>>> from functools import reduce
>>> reduce(lambda x,y: x+y, [1,2,3,4,5])
15
>>>

첫번째 방법은 모듈 전체를 가져오는 방법입니다. 두번째 방법은 개발할때 필요한 모듈만 가지고 오는 방법입니다.

불러온 모듈이 필요없을 경우 삭제하는 방법 : del 모듈

>>> del functools

[파이썬 더 알아보기]

https://www.naragara.com/%ed%8c%8c%ec%9d%b4%ec%8d%acpython%ea%b8%b0%ec%b4%88-%ea%b8%b0%eb%b3%b8-%eb%ac%b8%eb%b2%95-%ec%b4%9d%ec%a0%95%eb%a6%ac-%ec%9e%90%eb%a3%8c/
https://www.naragara.com/%ed%8c%8c%ec%9d%b4%ec%8d%ac-python-%ec%9e%90%eb%a3%8c%ed%98%95dictionary-list-tuple-set-%ec%b4%9d%ec%a0%95%eb%a6%ac/

카테고리의 다른 글
error: Content is protected !!