Імпортувати модуль в Python з прикладами

⚡ Розумний підсумок

Імпорт в Python дозволяє одному файлу повторно використовувати змінні, функції та класи, визначені в іншому. Модуль — це просто файл .py, тоді як пакет групує пов'язані модулі всередині каталогу, позначеного файлом __init__.py.

  • 🔘 Що таке модуль: Модуль — це окремий файл .py, який містить змінні, функції або класи.
  • ☑️ імпортувати ключове слово: import завантажує весь модуль; module_name.function_name викликає його члени.
  • ✅ Вибірковий імпорт: from module import name завантажує лише ті функції або змінні, які вам потрібні.
  • 🧪 Псевдоніми: import module as alias скорочує довгі імена; from module import * надає доступ до всіх параметрів.
  • 🛠️ Пакети та шляхи: __init__.py перетворює папку на пакет; sys.path перераховує місця пошуку.
  • 🤖 Робочі процеси зі штучним інтелектом: Проєкти машинного навчання імпортують NumPy, pandas та PyTorch як модулі.

Імпортувати модуль в Python

У розділах нижче пояснюються модулі, пакети, різні стилі імпорту та те, як працює абсолютний та відносний імпорт у Python.

Що таке модулі Python?

Модуль — це файл із Python код. Код може бути у формі змінних, функцій або визначеного класу. Ім'я файлу стає назвою модуля.

Наприклад, якщо ім’я вашого файлу guru99.py, ім’я модуля буде гуру99. Завдяки функціям модуля ви можете розбити свій код на різні файли замість того, щоб записувати все в один файл.

Що таке Python модуль імпорту?

Файл вважається модулем у PythonЩоб використовувати модуль, його потрібно імпортувати за допомогою імпорт ключове слово. Функції або змінні, присутні у файлі, можна використовувати в іншому файлі шляхом імпорту модуля. Ця функціональність доступна в інших мовах, таких як TypeScript, Javaсценарій, Java, Ruby тощо.

Як створити та імпортувати модуль Python?

Тепер ми створимо модуль та імпортуємо його в інший файл.

Ось процес створення та імпорту модуля, як показано на знімку екрана:

Створення та імпортування модуля в Python

Виконайте наведені кроки для створення модуля в Python.

Структура папок, яка використовується для перевірки коду, така:

modtest/
	test.py
	display.py	

Крок 1) Створіть файл і назвіть його test.py

Крок 2) Усередині test.py створіть функцію під назвою display_message()

Def display_message():
    return "Welcome to Guru99 Tutorials!"

Крок 3) Тепер створіть інший файл display.py.

Крок 4) Всередині display.py імпортуйте файл модуля test.py, як показано нижче:

import test

Під час імпорту вам не потрібно згадувати test.py, лише назву файлу.

Крок 5) Тоді ви можете викликати функцію display_message() з test.py всередині display.py. Вам потрібно використовувати module_name.function_name.

Наприклад test.display_message().

Import test
print(test.display_message())

Крок 6) Коли ви запустите display.py, ви отримаєте наступне вихід:

Welcome to Guru99 Tutorials!

Імпортування класу в Python

Раніше ми розглядали простий модуль з функцією. Тут ми створимо клас і посилатимемося на клас всередині іншого файлу.

Структура папок для тестування коду така:

myproj/
	Car.py
	display.py

Створіть файл під назвою Car.py із таким кодом:

Ім'я файлу: Car.py

class Car:
	brand_name = "BMW"
	model = "Z4"
	manu_year = "2020"

	def __init__(self, brand_name, model, manu_year):
		self.brand_name = brand_name
		self.model = model
		self.manu_year = manu_year

	def car_details(self):
		print("Car brand is ", self.brand_name)
		print("Car model is ", self.model)
		print("Car manufacture year is ", self.manu_year)
			
			
	def get_Car_brand(self):
		print("Car brand is ", self.brand_name)

	def get_Car_model(self):
		print("Car model is ", self.model) 

У файлі Car.py є атрибути brand_name, model та manu_year. Функції, визначені всередині класу: car_details(), get_Car_brand(), get_Car_model().

Давайте тепер використаємо файл Car.py як модуль в іншому файлі під назвою display.py.

Ім'я файлу: display.py

import Car
car_det = Car.Car("BMW","Z5", 2020)
print(car_det.brand_name)
print(car_det.car_details())
print(car_det.get_Car_brand())
print(car_det.get_Car_model())

вихід:

BMW
Car brand is  BMW
Car model is  Z5
Car manufacture year is  2020
Car brand is  BMW
Car model is  Z5

Отже, ми можемо отримати доступ до всіх змінних та функцій з Car.py за допомогою модуля Car.

Використання модуля імпорту from to

Ви можете імпортувати лише невелику частину модуля, тобто лише необхідні функції та назви змінних з модуля, замість імпорту повного коду.

Якщо ви хочете імпортувати лише певні елементи, ви можете скористатися ключовим словом «from», щоб імпортувати те, що вам потрібно.

Отже, синтаксис такий

from  module import your function_name , variables,... etc.

Структура папок, яка використовується для перевірки коду, така:

modtest/
	test.py
	display.py	

У test.py є 2 функції, як показано:

Ім'я файлу: test.py

defdisplay_message():
	return "Welcome to Guru99 Tutorials!"
	
def display_message1():
	return "All about Python!"

Тепер вам потрібна функція display_message(). Доступ до функції або змінної, яку ви імпортуєте, можна отримати безпосередньо, як показано нижче:

Ім'я файлу: display.py

from test import display_message
print(display_message())

вихід:

Welcome to Guru99 Tutorials!

Тепер, якщо ви використаєте функцію display_message1(), вона викличе помилку, що функція не визначена, як показано нижче:

from test import display_message
print(display_message1())

вихід:

Traceback (most recent call last):
File "display.py", line 3, in <module>
print(display_message1())
Name Error: name 'display_message1' is not defined

Імпорт всього з модуля

Імпорт дозволяє імпортувати повний модуль, використовуючи команду import, а потім назву модуля, тобто назву файлу або бібліотеку, яку потрібно використовувати.

Синтаксис:

Import module

Або за допомогою

from module import *

Структура папок, яка використовується для перевірки коду, така:

modtest/
	test.py
	display.py	

Нижче наведено деталі коду в test.py

my_name = "Guru99"
my_address = "Mumbai"

defdisplay_message():
	return "Welcome to Guru99 Tutorials!"
	
	
def display_message1():
	return "All about Python!"

Використання модуля імпорту

Використовуючи лише назву модуля імпорту, щоб звернутися до змінних та функцій всередині модуля, потрібно додати перед ними назву модуля.

Приклад

Ім'я файлу: display.py

Import test
print(test.display_message())
print(test.display_message1())
print(test.my_name)
print(test.my_address)

Назва модуля test використовується для позначення функцій та змінних усередині модуля test.

вихід:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

Використання імпорту *

Давайте розглянемо приклад використання імпорт *. Використання імпорт *, функції та змінні доступні безпосередньо, як показано в прикладі нижче:

from test import *

print(display_message())
print(display_message1())
print(my_name)
print(my_address)

вихід:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

Функція dir().

dir() – це вбудована функція в PythonФункція dir() повертає всі властивості та методи, включаючи вбудовані властивості заданого об'єкта.

Отже, коли dir() використовується на модулі, він поверне вам змінні та функції, які присутні всередині модуля.

Ось робочий приклад dir() на модулі. У нас є клас під назвою Car.py, давайте імпортуємо Car та призначимо його до dir(), щоб побачити вивід.

Структура папок для перевірки коду буде такою:

test prop/
	Car.py
	test.py	

Ім'я файлу: Car.py

class Car:
	brand_name = "BMW"
	model = "Z4"
	manu_year = "2020"

	def __init__(self, brand_name, model, manu_year):
		self.brand_name = brand_name
		self.model = model
		self.manu_year = manu_year

	def car_details(self):
		print("Car brand is ", self.brand_name)
		print("Car model is ", self.model)
		print("Car manufacture year is ", self.manu_year)
			
			
	def get_Car_brand(self):
		print("Car brand is ", self.brand_name)

	def get_Car_model(self):
		print("Car model is ", self.model) 

Ім'я файлу: test.py

import Car

class_contents = dir(Car)
print(class_contents)

Вихід дає нам назву класу та всі функції, визначені в Car.py.

Ви також можете спробувати використати dir() у вбудованому модулі, доступному в PythonДавайте спробуємо те саме на json модуль, як показано в прикладі нижче. Він відобразить усі властивості та методи, доступні в json модуль

Import json
json_details = dir(json)
print(json_details)

вихід:

['JSONDecodeError', 'JSONDecoder', 'JSONEncoder', '__all__', '__author__', '__bu
iltins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__pac
kage__', '__path__', '__spec__', '__version__', '_default_decoder', '_default_en
coder', 'codecs', 'decoder', 'detect_encoding', 'dump', 'dumps', 'encoder', 'loa
d', 'loads', 'scanner']

Пакети

Пакет — це каталог із усіма модулями, визначеними в ньому. Щоб зробити a Python інтерпретатор розглядає його як пакет, ваш каталог повинен містити файл __init__.py. __init__.py робить каталог пакетом. Ось макет пакета, над яким ми будемо працювати.

Пакети в Python

Назва пакета мій пакетЩоб розпочати роботу з пакетом, створіть каталог під назвою mypackage/. Усередині цього каталогу створіть порожній файл під назвою __init__.py. Створіть ще 3 файли module1.py, module2.py та module3.py та визначте функції, як показано на скріншоті. Ось детальна інформація про module1.py, module2.py та module3.py

module1.py

def mod1_func1():
print("Welcome to Module1 function1")

def mod1_func2():
print("Welcome to Module1 function2")

def mod1_func3():
print("Welcome to Module1 function3")

module2.py

def mod2_func1():
print("Welcome to Module2 function1")

def mod2_func2():
print("Welcome to Module2 function2")

def mod2_func3():
print("Welcome to Module2 function3")

module3.py

def mod3_func1():
print("Welcome to Module3 function1")

def mod3_func2():
print("Welcome to Module3 function2")

def mod3_func3():
print("Welcome to Module3 function3")

Команда пакет готовий до використання. Тепер викличте пакет у будь-якому з ваших файлів, як показано нижче в test.py:

Тут mypackage.module1 імпортується та отримує псевдонім як режим1Аналогічно, ви можете використовувати інші модулі module2.py та module3.py з mypackage.

import mypackage.module1 as mod1

print(mod1.mod1_func1())
print(mod1.mod1_func2())
print(mod1.mod1_func2())

вихід:

Welcome to Module1 function1
None
Welcome to Module1 function2
None
Welcome to Module1 function2
None

Ми щойно продемонстрували пакет за допомогою простого модуля з функціями всередині нього. Відповідно до вашого проекту, ви також можете створювати пакети з підпакетами, тобто підпапками, що містять модулі з визначеними класами.

Python Шлях пошуку модуля

Під час виконання, коли Python трапляється назва модуля імпорту, інтерпретатор намагається знайти модуль. Він шукає модуль у вбудованому списку модулів, а потім у всіх каталогах, визначених у sys.path.

Підводячи підсумок, інтерпретатор виконує наступний пошук, щоб знайти модуль:

  1. У вашому поточному каталозі.
  2. У списку вбудованих модулів.
  3. Усередині каталогів sys.path.

Ви можете отримати детальну інформацію про sys.path, імпортувавши модуль sys та вивівши sys.path. Це надасть вам список каталогів, як показано нижче:

importsys
print(sys.path)

вихід:

['Python Latest\\task2', 'Users\\AppData\\Local\\Programs\\Python\
\Python37\\python37.zip', 'Users\\AppData\\Local\\Programs\\Python\\P
ython37\\DLLs']

Ви також можете змінити шлях і зберегти каталоги відповідно до ваших вимог.

Використання псевдоніма модуля в імпорті

Ви також можете скоротити назву модуля, надавши їй псевдонім. Псевдонім можна створити за допомогою as keyword.

Синтаксис:

import filename as alias name

Структура папок для перевірки коду буде такою:

Mod test/
	test.py
	display.py	

Нижче наведено код у test.py

my_name = "Guru99"
my_address = "Mumbai"

def display_message():
	return "Welcome to Guru99 Tutorials!"	
	
def display_message1():
	return "All about Python!"

Тепер ми будемо використовувати псевдонім для test.py у display.py

Import test as t

print(t.display_message())
print(t.display_message1())
print(t.my_name)
print(t.my_address)

Псевдонім, який використовується для модуля test, — t. Отже, до функцій та змінних з test.py можна звертатися за допомогою псевдоніма t.

вихід:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

Абсолютний і відносний імпорт в Python

Тепер ви знаєте, як імпортувати файл як модуль в інший файл. Давайте тепер подивимося, як керувати файлами, доступними в папках. Файли в папках можна імпортувати за допомогою абсолютного або відносного імпорту.

Вважайте, що у вас є структура папок проекту, як показано нижче:

Абсолютний і відносний імпорт в Python

Коренева папка — myproject/. Вона має дві підпапки: package1 та package2.

Папка package1 містить два модулі: module1.py та module2.py.

Папка package2 містить один клас myclass.py, підпакет subpkg із module3.py та останній module4.py.

  • У module1.py є функція під назвою myfunc1.
  • У module2.py є функція під назвою myfunc2.
  • У module3.py є функція під назвою myfunc3.
  • У module4.py є функція під назвою myfunc4.

Використання абсолютного імпорту

Для абсолютного імпорту вам потрібно додати повний шлях до вашого модуля безпосередньо з кореневої папки проєкту.

Давайте тепер розглянемо, як використовувати абсолютний імпорт для звернення до функцій, присутніх у кожному з модулів.

Щоб працювати з функцією myfunc1, вам потрібно буде імпортувати її наступним чином:

from package1.module1  import  myfunc1
or
from package1 import module1
module1.myfunc1()  

Щоб працювати з функцією myfunc3, вам потрібно буде імпортувати її наступним чином:

from package1.subpkg.module3  import  myfunc3
or
from package1.subpkg import module3
module3.myfunc3()  

Переваги та недоліки використання абсолютного імпорту

Ось переваги використання абсолютного імпорту:

  • Стає легко tracповерніть модулі назад для перевірки коду.
  • Простий у використанні та дуже простий.
  • Якщо проєкт переміщено до іншого шляху, імпорт залишиться незмінним.

Недоліки використання абсолютного імпорту

Ось недоліки використання абсолютного імпорту:

  • Шлях імпорту може стати дуже довгим, якщо модулі вкладені, а назви модулів довгі.

Використання відносного імпорту

Розглядаючи ту саму структуру папок, згадану вище, ми побачимо, як імпортувати її за допомогою відносного імпорту.

При відносному імпорті модуль, що імпортується, знаходиться відносно поточного розташування, тобто розташування, де знаходиться оператор імпорту.

синтаксис

У відносному імпорті вам потрібно додати крапку (.) перед назвою модуля під час імпорту за допомогою від.

Перед назвою модуля стоятимуть дві крапки (..), якщо модуль знаходиться на один рівень вище від поточного розташування.

Звертаючись до вищезгаданого рисунка структури папок, ми маємо наступні модулі з їхніми функціями, на які нам потрібно звернутися.

  • У module1.py є функція під назвою myfunc1.
  • У module2.py є функція під назвою myfunc2.
  • У module3.py є функція під назвою myfunc3.
  • У module4.py є функція під назвою myfunc4.

Щоб працювати з функцією myfunc1, вам потрібно буде імпортувати її наступним чином:

from  .module1  import  myfunc1

Щоб працювати з функцією myfunc3, вам потрібно буде імпортувати її наступним чином:

from  .subpkg.module3  import  myfunc3

Переваги відносного імпорту

  • З відносним імпортом працювати легко.
  • З поточного розташування імпорт можна скоротити порівняно з абсолютним імпортом.

Недоліки відносного імпорту

  • Використовуючи відносний імпорт, важко tracназад, де знаходиться код.

Поширені запитання

Python Не вдається знайти модуль. Переконайтеся, що файл написано правильно, знаходиться в sys.path або в поточній папці, а пакет встановлено у вашому активному віртуальному середовищі. Виконайте команду pip install, а потім вкажіть назву пакета для сторонніх модулів.

Спочатку встановіть його за допомогою типун, Python менеджер пакетів, наприклад, pip install pandas. Після встановлення у ваше середовище імпортуйте його звичайним способом за допомогою import pandas. Вбудовані модулі, такі як json, не потребують встановлення.

Циклічний імпорт відбувається, коли два модулі імпортують один одного, залишаючи один завантаженим лише частково. Виправте це, об'єднавши спільний код, імпортуючи його всередині функції, яка його потребує, або імпортуючи весь модуль замість конкретних назв.

Цей захист запускає код лише тоді, коли файл виконується безпосередньо, а не під час імпорту. Без нього кожен імпорт повторно запускав би оператори верхнього рівня модуля. Він відокремлює функції повторного використання від тестового коду у стилі скрипта.

Ні. Python виконує модуль один раз, потім кешує його в sys.modules та повторно використовує цей об'єкт для подальшого імпорту. Щоб примусово перезавантажити модуль під час розробки, викличте importlib.reload(module).

Використовуйте importlib.import_module(“name”), коли назва модуля відома лише під час роботи, наприклад, під час завантаження плагінів. Вона повертає об’єкт модуля, тож ви можете отримати доступ до його функцій, як під час звичайного імпорту.

Імпорт коду машинного навчання з NumPy, pandas, scikit-learn, TensorFlow та PyTorch як модулі. Команди також розділяють власні конвеєри на модулі та пакети повторного використання, а потім імпортують спільні функції попередньої обробки та навчання між скриптами.

Так. GitHub Copilot та помічники агентів пропонують рядки імпорту під час введення тексту, додають відсутні дані імпорту та допомагають вирішувати помилки імпорту. Завжди перевіряйте, чи модуль встановлено, а назва відповідає вашому середовищу, перш ніж довіряти пропозиції.

Підсумуйте цей пост за допомогою: