• Skip to primary navigation
  • Skip to main content

IoTmaker

사물인터넷에 대한 모든 것 여기서 해결하셔요!

  • 홈
  • 책:마이크로파이썬을 활용한 사물인터넷
  • 책:따라 하면서 배우는 사물인터넷
  • 온라인 교육 코스
  • 새로운 소식
  • 의견보내기
  • 내 수강정보
  • 로그인
  • 회원가입

AI 프롬프트 활용 5-5: 마이크로파이썬에서 패키지와 모듈 비교

마이크로파이썬 > AI 프롬프트

프롬프트

  프롬프트 영역으로 마우스를 옮기고 Copy 버튼을 누르면 클립보드에 프롬프트의 내용이 복사됩니다.
마이크로파이썬에서 패키지의 용도를 설명하고 모듈과 비교해 설명해 줘.

AI가 만든 결과

아래는 마이크로파이썬(MicroPython)에서의 ‘패키지(package)’와 ‘모듈(module)’의 개념 및 차이점을 정리한 내용입니다. 일반 파이썬(CPython)과 유사한 구조이나, 임베디드 환경(메모리가 작거나 파일 시스템이 제한적인 경우)에서는 일부 구현상의 차이가 있을 수 있습니다.


1. 모듈(Module)

  1. 정의

    • 하나의 파이썬 파일(.py)이 곧 하나의 모듈입니다.
    • 예: sensor.py, utils.py 등
  2. 용도

    • 재사용 가능한 함수, 클래스, 변수 등을 한 파일에 모아두고, 다른 스크립트(또는 REPL)에서 import sensor처럼 불러와 사용합니다.
    • 코드를 논리적으로 분리하여 가독성을 높이고, 코드 중복을 줄이는 장점이 있습니다.
  3. 예시

    # sensor.py (모듈)
    def read_temp():
       return 42  # 센서 값 읽는 예시
    
    # main.py (모듈에서 가져다 씀)
    import sensor
    
    value = sensor.read_temp()
    print("온도:", value)
    • sensor.py는 read_temp 함수를 포함하는 모듈입니다.
    • main.py에서 sensor 모듈을 import하여 함수를 사용합니다.

2. 패키지(Package)

  1. 정의

    • 여러 모듈을 디렉터리(폴더) 구조로 묶어두어, 하나의 논리적인 묶음(네임스페이스)으로 관리하는 것
    • 일반 파이썬(CPython)에서는 패키지 디렉터리에 __init__.py 파일이 존재해야 패키지로 인식합니다.
      • 마이크로파이썬에서도 유사하지만, 특정 버전에서는 __init__.py 없이도 동작하기도 합니다.
  2. 용도

    • 프로젝트 규모가 커질 때, 관련 모듈들(파일들)을 하나의 폴더 아래에 두어, 서로 다른 기능을 구분하고 충돌을 방지합니다.
    • 예: network, mqtt, database 등 하위 모듈들을 net 패키지 아래에 배치할 수 있습니다.
  3. 구조 예시
    가령 다음과 같은 디렉터리 구조를 가정해봅시다:

    my_project/
    ├── net/
    │   ├── __init__.py   (패키지 초기화, 버전에 따라 생략 가능)
    │   ├── wifi.py
    │   ├── mqtt_client.py
    ├── main.py
    • net라는 디렉터리가 패키지 역할을 합니다.
    • wifi.py, mqtt_client.py는 각각 모듈입니다.
    • __init__.py를 통해 패키지 초기화 작업(버전이나 환경에 따라 생략 가능)을 할 수 있습니다.

    사용 예:

    # main.py
    from net import wifi, mqtt_client
    
    wifi.connect("SSID", "PASSWORD")
    mqtt_client.publish("topic/sensor", "Hello World")
  4. 이점

    • 모듈들을 논리적으로 그룹화하여, 대형 프로젝트에서도 이름 충돌이나 코드 혼잡을 방지합니다.
    • net.wifi.connect(), net.mqtt_client.publish()처럼 네임스페이스가 명확해집니다.

3. 모듈과 패키지의 비교

구분모듈(Module)패키지(Package)
기본 단위단일 .py 파일여러 모듈(.py 파일)을 모아놓은 디렉터리
구성 요소변수, 함수, 클래스 등의 코드 모음여러 모듈(또는 서브 패키지), __init__.py 파일
사용 예시import sensor / from sensor import read_tempimport net.wifi / from net import wifi
목적코드 재사용 & 분리모듈들을 묶어 더 큰 단위로 재사용 & 조직화
MicroPython 차이대부분 Python 표준과 유사하지만, 일부 버전에서 __init__.py가 필수적이지 않을 수 있음일반 파이썬과 유사하지만 메모리/파일 시스템 제약 유의
  • 모듈: 하나의 파일 단위로 재사용 가능한 코드를 담는다.
  • 패키지: 여러 모듈을 폴더 구조로 묶어, 더 큰 규모에서 체계적으로 관리한다.

4. 마이크로파이썬에서 주의할 점

  1. 파일 시스템 및 메모리 제한

    • 임베디드 기기(ESP8266, ESP32 등)에서는 스토리지(Flash)와 RAM이 작을 수 있으므로,
      패키지 구조가 지나치게 많아지면 메모리 부족 또는 성능 저하가 발생할 수 있습니다.
    • 필요하다면, 단순 모듈 수준으로만 관리하거나, firmware에 frozen modules 방식으로 포함시키기도 합니다.
  2. __init__.py 유무

    • 일반 Python에서는 패키지 인식을 위해 __init__.py 파일이 필수였으나,
      MicroPython에서는 (버전에 따라) __init__.py가 없어도 같은 디렉터리 내의 모듈을 패키지처럼 import할 수 있는 경우가 있습니다.
    • 그래도 호환성과 명시성을 위해 __init__.py 파일을 두는 것이 좋습니다.
  3. 모듈 검색 경로

    • MicroPython은 sys.path(또는 내부 PATH)로부터 모듈(패키지)을 검색합니다.
    • 특정 기기(예: ESP32)에서는 /가 루트이거나, flash/, sd/ 등으로 경로가 구분되기도 하므로,
      코드 배치 구조를 잘 확인해야 import가 제대로 동작합니다.

결론

  • 모듈(module): 파이썬 코드가 들어있는 하나의 .py 파일.
  • 패키지(package): 관련 모듈들을 폴더 구조로 묶어, 보다 큰 스케일에서 코드 재사용과 네임스페이스 관리가 편리하도록 만든 것.
  • 마이크로파이썬에서도 일반 파이썬과 동일한 개념으로 사용하지만, 임베디드 환경의 제약(메모리, 파일 시스템)을 고려해야 합니다.

Copyright © 2025 ·로그인