İçe aktarımları yapılandırma

Python Paketleri Geliştirme

James Fulton

Climate informatics researcher

Paket içe aktarımları olmadan

import mysklearn
help(mysklearn.preprocessing)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'mysklearn' modülünde 
  'preprocessing' niteliği yok

Alt paketleri olan paketin dizin ağacı

mysklearn/
|-- __init__.py
|-- preprocessing
|   |-- __init__.py
|   |-- normalize.py
|   |-- standardize.py
|-- regression
|   |-- __init__.py
|   |-- regression.py
|-- utils.py
Python Paketleri Geliştirme

Paket içe aktarımları olmadan

import mysklearn.preprocessing
help(mysklearn.preprocessing)
mysklearn içinde mysklearn.preprocessing paketi hakkında yardım:
AD

    mysklearn.preprocessing - Standart 
      ön işleme işlemleri için bir alt paket.

Alt paketleri olan paketin dizin ağacı

mysklearn/
|-- __init__.py
|-- preprocessing
|   |-- __init__.py
|   |-- normalize.py
|   |-- standardize.py
|-- regression
|   |-- __init__.py
|   |-- regression.py
|-- utils.py
Python Paketleri Geliştirme

Paket içe aktarımları olmadan

import mysklearn.preprocessing
help(mysklearn.preprocessing.normalize)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 
  'mysklearn.preprocessing' modülünde 'normalize'
  niteliği yok

Alt paketleri olan paketin dizin ağacı

mysklearn/
|-- __init__.py
|-- preprocessing
|   |-- __init__.py
|   |-- normalize.py
|   |-- standardize.py
|-- regression
|   |-- __init__.py
|   |-- regression.py
|-- utils.py
Python Paketleri Geliştirme

Paket içe aktarımları olmadan

import mysklearn.preprocessing.normalize
help(mysklearn.preprocessing.normalize)
mysklearn.preprocessing.normalize modülü hakkında yardım
mysklearn.preprocessing içinde:

AD
    mysklearn.preprocessing.normalize - Veriyi 
      normalize eden bir modül.

Alt paketleri olan paketin dizin ağacı

mysklearn/
|-- __init__.py
|-- preprocessing
|   |-- __init__.py
|   |-- normalize.py
|   |-- standardize.py
|-- regression
|   |-- __init__.py
|   |-- regression.py
|-- utils.py
Python Paketleri Geliştirme

Alt paketleri paketlere aktarma

mysklearn/__init__.py

Mutlak içe aktarma

from mysklearn import preprocessing
  • En yaygın - daha açık

Bağıl içe aktarma

from . import preprocessing
  • Bazen kullanılır - daha kısa ve bazen daha basit

Alt paketleri olan paketin dizin ağacı

mysklearn/
|-- __init__.py        <--
|-- preprocessing
|   |-- __init__.py
|   |-- normalize.py
|   |-- standardize.py
|-- regression
|   |-- __init__.py
|   |-- regression.py
|-- utils.py
Python Paketleri Geliştirme

Modülleri içe aktarma

preprocessing öğesini mysklearn içine aktardık

import mysklearn
help(mysklearn.preprocessing)
mysklearn içinde mysklearn.preprocessing paketi hakkında yardım:
AD

    mysklearn.preprocessing - Standart 
      ön işleme işlemleri için bir alt paket.

Ancak preprocessing ile normalize arasında bağlantı yok

import mysklearn
help(mysklearn.preprocessing.normalize)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 
  'mysklearn.preprocessing' modülünde 'normalize'
  niteliği yok
Python Paketleri Geliştirme

Modülleri içe aktarma

mysklearn/preprocessing/__init__.py

Mutlak içe aktarma

from mysklearn.preprocessing import normalize

Bağıl içe aktarma

from . import normalize

Alt paketleri olan paketin dizin ağacı

mysklearn/
|-- __init__.py
|-- preprocessing
|   |-- __init__.py    <--
|   |-- normalize.py
|   |-- standardize.py
|-- regression
|   |-- __init__.py
|   |-- regression.py
|-- utils.py
Python Paketleri Geliştirme

İçe aktarımları yeniden yapılandırma

import mysklearn
help(mysklearn.preprocessing.normalize.normalize_data)
mysklearn.preprocessing.normalize modülünde
normalize_data işlevi hakkında yardım:

normalize_data(x)
    Veri dizisini normalize et.
Python Paketleri Geliştirme

İşlevi alt pakete aktarma

mysklearn/preprocessing/__init__.py

Mutlak içe aktarma

from mysklearn.preprocessing.normalize import \
    normalize_data

Bağıl içe aktarma

from .normalize import normalize_data

Alt paketleri olan paketin dizin ağacı

mysklearn/
|-- __init__.py
|-- preprocessing
|   |-- __init__.py    <--
|   |-- normalize.py
|   |-- standardize.py
|-- regression
|   |-- __init__.py
|   |-- regression.py
|-- utils.py
Python Paketleri Geliştirme

İşlevi alt pakete aktarma

import mysklearn
help(mysklearn.preprocessing.normalize_data)
mysklearn_imp.preprocessing.normalize modülünde
normalize_data işlevi hakkında yardım:

normalize_data(x)
    Veri dizisini normalize et.
Python Paketleri Geliştirme

Kardeş modüller arasında içe aktarma

normalize.py içinde

Mutlak içe aktarma

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

Bağıl içe aktarma

from .funcs import mymax, mymin

Alt paketleri olan paketin dizin ağacı

mysklearn/
|-- __init__.py
|-- preprocessing
|   |-- __init__.py
|   |-- normalize.py   <--
|   |-- funcs.py
|   |-- standardize.py
|-- regression
|   |-- __init__.py
|   |-- regression.py
|-- utils.py
Python Paketleri Geliştirme

Uzak modüller arasında içe aktarma

Özel bir MyException hatası utils.py dosyasında

normalize.py, standardize.py ve regression.py içinde

Mutlak içe aktarma

from mysklearn.utils import MyException

Bağıl içe aktarma

from ..utils import MyException

Alt paketleri olan paketin dizin ağacı

mysklearn/
|-- __init__.py
|-- preprocessing
|   |-- __init__.py
|   |-- normalize.py   <--
|   `-- standardize.py <--
|-- regression
|   |-- __init__.py
|   |-- regression.py  <--
`-- utils.py
Python Paketleri Geliştirme

Bağıl içe aktarma kısa rehberi

  • from . import module
    • Geçerli dizinden module içe aktar
  • from .. import module
    • Bir üst dizinden module içe aktar
  • from .module import function
    • Geçerli dizindeki modülden function içe aktar
  • from ..subpackage.module import function
    • Bir üstteki alt paketteki module modülünden function içe aktar
Python Paketleri Geliştirme

Ayo berlatih!

Python Paketleri Geliştirme

Preparing Video For Download...