इम्पोर्ट्स की संरचना

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
Python पैकेज विकसित करना

पैकेज इम्पोर्ट्स के बिना

import mysklearn.preprocessing
help(mysklearn.preprocessing)
Help on package mysklearn.preprocessing in 
mysklearn:

NAME
    mysklearn.preprocessing - A subpackage 
      for standard preprocessing operations.

सबपैकेज के साथ पैकेज का डायरेक्टरी ट्री

mysklearn/
|-- __init__.py
|-- preprocessing
|   |-- __init__.py
|   |-- normalize.py
|   |-- standardize.py
|-- regression
|   |-- __init__.py
|   |-- regression.py
|-- utils.py
Python पैकेज विकसित करना

पैकेज इम्पोर्ट्स के बिना

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
Python पैकेज विकसित करना

पैकेज इम्पोर्ट्स के बिना

import mysklearn.preprocessing.normalize
help(mysklearn.preprocessing.normalize)
Help on module mysklearn.preprocessing.normalize
in mysklearn.preprocessing:

NAME
    mysklearn.preprocessing.normalize - A module
      for normalizing data.

सबपैकेज के साथ पैकेज का डायरेक्टरी ट्री

mysklearn/
|-- __init__.py
|-- preprocessing
|   |-- __init__.py
|   |-- normalize.py
|   |-- standardize.py
|-- regression
|   |-- __init__.py
|   |-- regression.py
|-- utils.py
Python पैकेज विकसित करना

सबपैकेज को पैकेज में इम्पोर्ट करना

mysklearn/__init__.py

Absolute import

from mysklearn import preprocessing
  • सबसे अधिक उपयोगी - अधिक स्पष्ट

Relative import

from . import preprocessing
  • कभी-कभी उपयोगी - छोटा और कई बार सरल

सबपैकेज के साथ पैकेज का डायरेक्टरी ट्री

mysklearn/
|-- __init__.py        <--
|-- preprocessing
|   |-- __init__.py
|   |-- normalize.py
|   |-- standardize.py
|-- regression
|   |-- __init__.py
|   |-- regression.py
|-- utils.py
Python पैकेज विकसित करना

मॉड्यूल्स इम्पोर्ट करना

हमने preprocessing को mysklearn में इम्पोर्ट किया

import mysklearn
help(mysklearn.preprocessing)
Help on package mysklearn.preprocessing in 
mysklearn:

NAME
    mysklearn.preprocessing - A subpackage 
      for standard preprocessing operations.

लेकिन 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'
Python पैकेज विकसित करना

मॉड्यूल्स इम्पोर्ट करना

mysklearn/preprocessing/__init__.py

Absolute import

from mysklearn.preprocessing import normalize

Relative import

from . import normalize

सबपैकेज के साथ पैकेज का डायरेक्टरी ट्री

mysklearn/
|-- __init__.py
|-- preprocessing
|   |-- __init__.py    <--
|   |-- normalize.py
|   |-- standardize.py
|-- regression
|   |-- __init__.py
|   |-- regression.py
|-- utils.py
Python पैकेज विकसित करना

इम्पोर्ट्स का पुनर्गठन

import mysklearn
help(mysklearn.preprocessing.normalize.normalize_data)
Help on function normalize_data in module
mysklearn.preprocessing.normalize:

normalize_data(x)
    Normalize the data array.
Python पैकेज विकसित करना

फंक्शन को सबपैकेज में इम्पोर्ट करें

mysklearn/preprocessing/__init__.py

Absolute import

from mysklearn.preprocessing.normalize import \
    normalize_data

Relative import

from .normalize import normalize_data

सबपैकेज के साथ पैकेज का डायरेक्टरी ट्री

mysklearn/
|-- __init__.py
|-- preprocessing
|   |-- __init__.py    <--
|   |-- normalize.py
|   |-- standardize.py
|-- regression
|   |-- __init__.py
|   |-- regression.py
|-- utils.py
Python पैकेज विकसित करना

फंक्शन को सबपैकेज में इम्पोर्ट करें

import mysklearn
help(mysklearn.preprocessing.normalize_data)
Help on function normalize_data in module
mysklearn_imp.preprocessing.normalize:

normalize_data(x)
    Normalize the data array.
Python पैकेज विकसित करना

सिब्लिंग मॉड्यूल्स के बीच इम्पोर्ट करना

normalize.py में

Absolute import

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

Relative import

from .funcs import mymax, mymin

सबपैकेज के साथ पैकेज का डायरेक्टरी ट्री

mysklearn/
|-- __init__.py
|-- preprocessing
|   |-- __init__.py
|   |-- normalize.py   <--
|   |-- funcs.py
|   |-- standardize.py
|-- regression
|   |-- __init__.py
|   |-- regression.py
|-- utils.py
Python पैकेज विकसित करना

दूर स्थित मॉड्यूल्स के बीच इम्पोर्ट करना

एक कस्टम exception MyException utils.py में है

normalize.py, standardize.py और regression.py में

Absolute import

from mysklearn.utils import MyException

Relative import

from ..utils import MyException

सबपैकेज के साथ पैकेज का डायरेक्टरी ट्री

mysklearn/
|-- __init__.py
|-- preprocessing
|   |-- __init__.py
|   |-- normalize.py   <--
|   `-- standardize.py <--
|-- regression
|   |-- __init__.py
|   |-- regression.py  <--
`-- utils.py
Python पैकेज विकसित करना

Relative import चीट शीट

  • from . import module
    • वर्तमान डायरेक्टरी से, module इम्पोर्ट करें
  • from .. import module
    • एक डायरेक्टरी ऊपर से, module इम्पोर्ट करें
  • from .module import function
    • वर्तमान डायरेक्टरी के मॉड्यूल से, function इम्पोर्ट करें
  • from ..subpackage.module import function
    • एक डायरेक्टरी ऊपर के सबपैकेज में जो मॉड्यूल है, उससे function इम्पोर्ट करें
Python पैकेज विकसित करना

अभ्यास करते हैं!

Python पैकेज विकसित करना

Preparing Video For Download...