파이썬 패키지: 생성과 사용방법

파이썬 패키지: 생성과 사용방법

파이썬은 모듈의 집합인 패키지를 통해 코드를 구조화하는 방법을 제공합니다. 패키지는 코드의 가독성과 재사용성을 향상시키며, 큰 프로젝트를 관리하는 데 필요한 도구를 제공합니다. 이 글에서는 패키지의 개념과 생성, 사용 방법에 대해 알아보겠습니다.

1. 패키지란 무엇인가?

패키지는 파이썬 모듈을 디렉토리 구조로 구성한 것입니다. 이를 통해 관련된 기능을 그룹화하고 코드를 효과적으로 관리할 수 있습니다. 패키지는 코드의 가독성과 재사용성을 향상시키며, 큰 프로젝트를 관리하는 데 필요한 도구를 제공합니다.

패키지 생성하기

패키지를 생성하는 것은 모듈 구조를 디렉토리 구조로 확장하는 것입니다. 각 디렉토리는 ‘__init__.py’라는 특별한 파일을 포함하며, 이 파일은 해당 디렉토리가 패키지의 일부임을 파이썬에게 알려줍니다. ‘__init__.py’ 파일은 비워둘 수도 있고, 패키지의 초기화 코드를 담을 수도 있습니다.


▼ 예시 폴더 구조

.
└── blueshare
    ├── __init__.py
    └── itstudy
        ├── __init__.py
        ├── python.py
        └── javascript.py

이 폴더 구조에서 blueshare는 최상위 패키지이며, itstudy는 blueshare 패키지 내의 하위 패키지입니다. python.py와 javascript.py는 itstudy 패키지 내의 모듈입니다. ‘__init__.py’ 파일은 각 디렉토리가 파이썬 패키지의 일부임을 파이썬에게 알려주는 역할을 합니다.

패키지 사용하기: 패키지 내의 모듈 임포트

패키지 내의 모듈을 임포트 하려면, 패키지 이름을 포함한 전체 경로를 사용해야 합니다. 예를 들어, blueshare패키지의 itstudy서브패키지 내에 있는 python 모듈을 임포트 하려면 다음과 같이 작성합니다.

import blueshare.itstudy.python

2. __init__.py의 용도

‘__init__.py’ 파일은 패키지의 초기화를 담당합니다. 이 파일에는 패키지 임포트 시 실행되는 코드를 작성할 수 있습니다.

패키지 변수 및 함수 정의

‘__init__.py’ 파일 내에 패키지 수준의 변수나 함수를 정의할 수 있습니다. 이렇게 하면 패키지를 임포트 했을 때 이 변수나 함수를 직접 사용할 수 있습니다.

# __init__.py
package_var = "This is a package variable."

def package_function():
    print("This is a package function.")


이렇게 정의한 후, 패키지를 임포트 하면 패키지 수준의 변수나 함수를 바로 사용할 수 있습니다.

import blueshare
print(blueshare.package_var)
blueshare.package_function()

패키지 내 모듈을 미리 import

‘__init__.py’ 는 패키지가 import 될 때 실행되므로, 이 파일 내에서 패키지에 포함된 다른 모듈들을 미리 import 하는 것도 가능합니다. 이렇게 하면 패키지 사용자는 패키지 내의 특정 모듈을 별도로 import 하지 않고도 사용할 수 있습니다.

# __init__.py
from . import python


이제 패키지를 import 할 때 python 모듈도 함께 import 됩니다.

import blueshare
blueshare.python.read()

3. all

파이썬에서 from package import * 문을 사용하면, 패키지 내의 모든 public 객체가 현재 이름 공간으로 import 됩니다. 그러나 이 동작은 ‘__init__.py’ 파일의 ‘__all__’ 변수에 의해 제어됩니다. ‘__all__’ 변수는 문자열 리스트로, import 될 수 있는 모듈 또는 패키지 멤버 이름들을 지정합니다.

# __init__.py
__all__ = ['python', 'javascript']

이제 from blueshare import * 문을 사용하면, python와 javascript 모듈만 import 됩니다.

4. relative 패키지

파이썬의 패키지 구조 내에서 상대적인 위치를 사용하여 모듈을 임포트 하는 것이 가능합니다. 이를 통해 패키지 내부의 모듈 간에 쉽게 상호 작용할 수 있습니다.

# 같은 디렉토리의 모듈 임포트
from . import python

위 예제에서 ‘.’은 현재 디렉터리를 나타냅니다. 즉, 같은 디렉터리에 있는 python 모듈을 임포트 합니다.

# 부모 디렉토리의 모듈 임포트
from .. import itstudy

위 예제에서 ‘..’은 부모 디렉터리를 나타냅니다. 따라서 이 코드는 부모 디렉터리에 있는 itstudy 모듈을 임포트 합니다.


☞ 이러한 방식으로 현재 디렉터리나 부모 디렉터리에 있는 모듈을 쉽게 임포트 할 수 있습니다. 하지만 이 기능은 패키지 내에서만 사용할 수 있으며, 파이썬의 메인 스크립트에서는 사용할 수 없습니다. 이 점을 주의해야 합니다.

참고 자료


이 글이 도움이 되셨다면 공유를 부탁 드립니다. 다음 글에서 뵙겠습니다!

위로 스크롤