Menyusun impor

Mengembangkan Paket Python

James Fulton

Climate informatics researcher

Tanpa impor paket

import mysklearn
help(mysklearn.preprocessing)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: modul 'mysklearn' tidak memiliki 
  atribut 'preprocessing'

Pohon direktori untuk paket dengan subpaket

mysklearn/
|-- __init__.py
|-- preprocessing
|   |-- __init__.py
|   |-- normalize.py
|   |-- standardize.py
|-- regression
|   |-- __init__.py
|   |-- regression.py
|-- utils.py
Mengembangkan Paket Python

Tanpa impor paket

import mysklearn.preprocessing
help(mysklearn.preprocessing)
Bantuan untuk paket mysklearn.preprocessing di 
mysklearn:

NAMA
    mysklearn.preprocessing - Subpaket 
      untuk operasi pra-pemrosesan standar.

Pohon direktori untuk paket dengan subpaket

mysklearn/
|-- __init__.py
|-- preprocessing
|   |-- __init__.py
|   |-- normalize.py
|   |-- standardize.py
|-- regression
|   |-- __init__.py
|   |-- regression.py
|-- utils.py
Mengembangkan Paket Python

Tanpa impor paket

import mysklearn.preprocessing
help(mysklearn.preprocessing.normalize)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: modul 
  'mysklearn.preprocessing' tidak memiliki atribut
  'normalize'

Pohon direktori untuk paket dengan subpaket

mysklearn/
|-- __init__.py
|-- preprocessing
|   |-- __init__.py
|   |-- normalize.py
|   |-- standardize.py
|-- regression
|   |-- __init__.py
|   |-- regression.py
|-- utils.py
Mengembangkan Paket Python

Tanpa impor paket

import mysklearn.preprocessing.normalize
help(mysklearn.preprocessing.normalize)
Bantuan untuk modul mysklearn.preprocessing.normalize
di mysklearn.preprocessing:

NAMA
    mysklearn.preprocessing.normalize - Modul
      untuk menormalisasi data.

Pohon direktori untuk paket dengan subpaket

mysklearn/
|-- __init__.py
|-- preprocessing
|   |-- __init__.py
|   |-- normalize.py
|   |-- standardize.py
|-- regression
|   |-- __init__.py
|   |-- regression.py
|-- utils.py
Mengembangkan Paket Python

Mengimpor subpaket ke dalam paket

mysklearn/__init__.py

Impor absolut

from mysklearn import preprocessing
  • Paling sering dipakai—lebih eksplisit

Impor relatif

from . import preprocessing
  • Kadang dipakai—lebih singkat dan sederhana

Pohon direktori untuk paket dengan subpaket

mysklearn/
|-- __init__.py        <--
|-- preprocessing
|   |-- __init__.py
|   |-- normalize.py
|   |-- standardize.py
|-- regression
|   |-- __init__.py
|   |-- regression.py
|-- utils.py
Mengembangkan Paket Python

Mengimpor modul

Kita mengimpor preprocessing ke mysklearn

import mysklearn
help(mysklearn.preprocessing)
Bantuan untuk paket mysklearn.preprocessing di 
mysklearn:

NAMA
    mysklearn.preprocessing - Subpaket 
      untuk operasi pra-pemrosesan standar.

Namun preprocessing tidak terhubung ke normalize

import mysklearn
help(mysklearn.preprocessing.normalize)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: modul 
  'mysklearn.preprocessing' tidak memiliki atribut
  'normalize'
Mengembangkan Paket Python

Mengimpor modul

mysklearn/preprocessing/__init__.py

Impor absolut

from mysklearn.preprocessing import normalize

Impor relatif

from . import normalize

Pohon direktori untuk paket dengan subpaket

mysklearn/
|-- __init__.py
|-- preprocessing
|   |-- __init__.py    <--
|   |-- normalize.py
|   |-- standardize.py
|-- regression
|   |-- __init__.py
|   |-- regression.py
|-- utils.py
Mengembangkan Paket Python

Restrukturisasi impor

import mysklearn
help(mysklearn.preprocessing.normalize.normalize_data)
Bantuan untuk fungsi normalize_data di modul
mysklearn.preprocessing.normalize:

normalize_data(x)
    Menormalisasi array data.
Mengembangkan Paket Python

Impor fungsi ke subpaket

mysklearn/preprocessing/__init__.py

Impor absolut

from mysklearn.preprocessing.normalize import \
    normalize_data

Impor relatif

from .normalize import normalize_data

Pohon direktori untuk paket dengan subpaket

mysklearn/
|-- __init__.py
|-- preprocessing
|   |-- __init__.py    <--
|   |-- normalize.py
|   |-- standardize.py
|-- regression
|   |-- __init__.py
|   |-- regression.py
|-- utils.py
Mengembangkan Paket Python

Impor fungsi ke subpaket

import mysklearn
help(mysklearn.preprocessing.normalize_data)
Bantuan untuk fungsi normalize_data di modul
mysklearn_imp.preprocessing.normalize:

normalize_data(x)
    Menormalisasi array data.
Mengembangkan Paket Python

Impor antar modul bersaudara

Di normalize.py

Impor absolut

from mysklearn.preprocessing.funcs import (
    mymax, mymin
)

Impor relatif

from .funcs import mymax, mymin

Pohon direktori untuk paket dengan subpaket

mysklearn/
|-- __init__.py
|-- preprocessing
|   |-- __init__.py
|   |-- normalize.py   <--
|   |-- funcs.py
|   |-- standardize.py
|-- regression
|   |-- __init__.py
|   |-- regression.py
|-- utils.py
Mengembangkan Paket Python

Impor antar modul yang berjauhan

Exception kustom MyException ada di utils.py

Di normalize.py, standardize.py, dan regression.py

Impor absolut

from mysklearn.utils import MyException

Impor relatif

from ..utils import MyException

Pohon direktori untuk paket dengan subpaket

mysklearn/
|-- __init__.py
|-- preprocessing
|   |-- __init__.py
|   |-- normalize.py   <--
|   `-- standardize.py <--
|-- regression
|   |-- __init__.py
|   |-- regression.py  <--
`-- utils.py
Mengembangkan Paket Python

Ringkas impor relatif

  • from . import module
    • Dari direktori saat ini, impor module
  • from .. import module
    • Dari satu direktori di atas, impor module
  • from .module import function
    • Dari modul di direktori saat ini, impor function
  • from ..subpackage.module import function
    • Dari subpaket satu direktori di atas, dari module di subpaket itu, impor function
Mengembangkan Paket Python

Ayo berlatih!

Mengembangkan Paket Python

Preparing Video For Download...