Python 패키지 개발하기
James Fulton
Climate informatics researcher
import mysklearn
help(mysklearn.preprocessing)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'mysklearn' has no
attribute 'preprocessing'
하위 패키지가 있는 패키지의 디렉터리 트리
mysklearn/
|-- __init__.py
|-- preprocessing
| |-- __init__.py
| |-- normalize.py
| |-- standardize.py
|-- regression
| |-- __init__.py
| |-- regression.py
|-- utils.py
import mysklearn.preprocessing
help(mysklearn.preprocessing)
Help on package mysklearn.preprocessing in
mysklearn:
NAME
mysklearn.preprocessing - 표준 전처리 작업을 위한
서브패키지.
하위 패키지가 있는 패키지의 디렉터리 트리
mysklearn/
|-- __init__.py
|-- preprocessing
| |-- __init__.py
| |-- normalize.py
| |-- standardize.py
|-- regression
| |-- __init__.py
| |-- regression.py
|-- utils.py
import mysklearn.preprocessing
help(mysklearn.preprocessing.normalize)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module
'mysklearn.preprocessing' has no attribute
'normalize'
하위 패키지가 있는 패키지의 디렉터리 트리
mysklearn/
|-- __init__.py
|-- preprocessing
| |-- __init__.py
| |-- normalize.py
| |-- standardize.py
|-- regression
| |-- __init__.py
| |-- regression.py
|-- utils.py
import mysklearn.preprocessing.normalize
help(mysklearn.preprocessing.normalize)
Help on module mysklearn.preprocessing.normalize
in mysklearn.preprocessing:
NAME
mysklearn.preprocessing.normalize - 데이터를
정규화하는 모듈.
하위 패키지가 있는 패키지의 디렉터리 트리
mysklearn/
|-- __init__.py
|-- preprocessing
| |-- __init__.py
| |-- normalize.py
| |-- standardize.py
|-- regression
| |-- __init__.py
| |-- regression.py
|-- utils.py
mysklearn/__init__.py
절대 임포트
from mysklearn import preprocessing
상대 임포트
from . import preprocessing
하위 패키지가 있는 패키지의 디렉터리 트리
mysklearn/
|-- __init__.py <--
|-- preprocessing
| |-- __init__.py
| |-- normalize.py
| |-- standardize.py
|-- regression
| |-- __init__.py
| |-- regression.py
|-- utils.py
preprocessing을 mysklearn에 임포트함
import mysklearn
help(mysklearn.preprocessing)
Help on package mysklearn.preprocessing in
mysklearn:
NAME
mysklearn.preprocessing - 표준 전처리 작업을 위한
서브패키지.
하지만 preprocessing은 normalize와 연결되지 않음
import mysklearn
help(mysklearn.preprocessing.normalize)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module
'mysklearn.preprocessing' has no attribute
'normalize'
mysklearn/preprocessing/__init__.py
절대 임포트
from mysklearn.preprocessing import normalize
상대 임포트
from . import normalize
하위 패키지가 있는 패키지의 디렉터리 트리
mysklearn/
|-- __init__.py
|-- preprocessing
| |-- __init__.py <--
| |-- normalize.py
| |-- standardize.py
|-- regression
| |-- __init__.py
| |-- regression.py
|-- utils.py
import mysklearn
help(mysklearn.preprocessing.normalize.normalize_data)
Help on function normalize_data in module
mysklearn.preprocessing.normalize:
normalize_data(x)
데이터 배열을 정규화합니다.
mysklearn/preprocessing/__init__.py
절대 임포트
from mysklearn.preprocessing.normalize import \
normalize_data
상대 임포트
from .normalize import normalize_data
하위 패키지가 있는 패키지의 디렉터리 트리
mysklearn/
|-- __init__.py
|-- preprocessing
| |-- __init__.py <--
| |-- normalize.py
| |-- standardize.py
|-- regression
| |-- __init__.py
| |-- regression.py
|-- utils.py
import mysklearn
help(mysklearn.preprocessing.normalize_data)
Help on function normalize_data in module
mysklearn_imp.preprocessing.normalize:
normalize_data(x)
데이터 배열을 정규화합니다.
normalize.py에서
절대 임포트
from mysklearn.preprocessing.funcs import (
mymax, mymin
)
상대 임포트
from .funcs import mymax, mymin
하위 패키지가 있는 패키지의 디렉터리 트리
mysklearn/
|-- __init__.py
|-- preprocessing
| |-- __init__.py
| |-- normalize.py <--
| |-- funcs.py
| |-- standardize.py
|-- regression
| |-- __init__.py
| |-- regression.py
|-- utils.py
사용자 정의 예외 MyException은 utils.py에 있습니다.
normalize.py, standardize.py, regression.py에서
절대 임포트
from mysklearn.utils import MyException
상대 임포트
from ..utils import MyException
하위 패키지가 있는 패키지의 디렉터리 트리
mysklearn/
|-- __init__.py
|-- preprocessing
| |-- __init__.py
| |-- normalize.py <--
| `-- standardize.py <--
|-- regression
| |-- __init__.py
| |-- regression.py <--
`-- utils.py
from . import modulemodule 임포트from .. import modulemodule 임포트from .module import function function 임포트from ..subpackage.module import functionmodule에서 function 임포트Python 패키지 개발하기