본문 바로가기

언어/Python

[ Python ] import로 모듈, 패키지, 서브 모듈 가져오기

반응형

파이썬의 import 문은 다른 모듈이나 패키지의 기능을 현재 스크립트나 모듈에서 사용할 수 있게 해주는 기능입니다.
import 문을 통해 표준 라이브러리나 외부 라이브러리, 사용자 정의 모듈 등을 불러올 수 있습니다.
파이썬의 import 문법과 그 사용법에 대해 자세히 설명하겠습니다.

1. 기본 import 문법

1. 모듈 전체를 가져오기

가장 기본적인 형태로 모듈 전체를 가져오는 방법입니다.

import math

print(math.sqrt(16))  # 4.0

2. 모듈에서 특정 객체만 가져오기

모듈 전체가 아닌 특정 함수, 클래스, 변수를 가져올 수 있습니다.

from math import sqrt

print(sqrt(16))  # 4.0

3. 별칭(alias) 사용하기

모듈이나 객체에 별칭을 붙여 간단하게 사용할 수 있습니다.

import numpy as np

array = np.array([1, 2, 3])
print(array)  # [1 2 3]

4. 모듈의 모든 객체 가져오기

모듈 내의 모든 객체를 현재 네임스페이스로 가져올 수 있습니다. 하지만, 네임스페이스가 오염될 위험이 있으므로 일반적으로 권장되지 않습니다.

from math import *

print(sqrt(16))  # 4.0
print(pi)        # 3.141592653589793

2. 패키지와 서브모듈 가져오기

파이썬 패키지는 여러 모듈을 포함하는 디렉토리입니다. 패키지 내의 서브모듈을 가져오는 방법도 있습니다.

1. 패키지 전체를 가져오기

import numpy

array = numpy.array([1, 2, 3])
print(array)  # [1 2 3]

2. 패키지의 특정 서브모듈 가져오기

from numpy import random

print(random.rand(3))  # [0.12345 0.67890 0.12345] 예시 출력

3. 서브패키지 내의 서브모듈 가져오기

from matplotlib.pyplot import plot

plot([1, 2, 3], [4, 5, 6])

3. 상대 경로와 절대 경로

모듈을 가져올 때, 상대 경로와 절대 경로를 사용할 수 있습니다.

1. 절대 경로

프로젝트의 루트 디렉토리부터 시작하는 경로를 사용합니다.

# 프로젝트 구조
# my_project/
# ├── main.py
# └── my_package/
#     ├── __init__.py
#     └── my_module.py

# main.py에서
import my_package.my_module

2. 상대 경로

점(.)을 사용하여 상대적인 위치를 나타냅니다. 상대 경로는 주로 패키지 내부에서 사용됩니다.

# my_package/__init__.py에서
from . import my_module

4. 자주 사용하는 import 패턴

1. 가독성을 위한 import 구분

표준 라이브러리, 서드 파티 라이브러리, 로컬 모듈 순으로 import를 구분합니다.

# 표준 라이브러리 import
import os
import sys

# 서드 파티 라이브러리 import
import numpy as np
import pandas as pd

# 로컬 모듈 import
import my_module

2. try/except로 import 예외 처리

특정 모듈이 존재하지 않을 경우에 대한 예외 처리를 할 수 있습니다.

try:
    import numpy as np
except ImportError:
    np = None

5. 모듈의 __name__ 속성

모듈이 직접 실행되는지, 다른 모듈에 의해 import되는지 확인할 수 있습니다.

# my_module.py
def main():
    print("This is my module")

if __name__ == "__main__":
    main()

6. import 시 코드 실행

모듈을 import할 때 모듈 내의 모든 코드가 실행됩니다. 따라서, 모듈 내에서 실행되어야 하는 코드와 import 시 실행되어야 하는 코드를 구분하는 것이 중요합니다.

# my_module.py
print("This will be printed on import")

def my_function():
    print("This is a function")

if __name__ == "__main__":
    print("This will only be printed when running my_module.py directly")

7. init.py 파일

패키지 디렉토리에 __init__.py 파일을 포함하면 해당 디렉토리가 패키지로 인식됩니다. 이 파일은 비어 있어도 됩니다.

# my_package/__init__.py
from .my_module import my_function

# 이제 my_package를 import하면 my_function을 사용할 수 있습니다.
import my_package
my_package.my_function()

이와 같은 방법을 통해 파이썬에서 import 문을 사용하여 모듈과 패키지를 효과적으로 관리하고 사용할 수 있습니다.

반응형