Импортировать модуль в 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 и Py.Torв виде модулей.

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

В разделах ниже объясняется, что такое модули, пакеты, различные стили импорта, а также как работают абсолютный и относительный импорт. Python.

Какие модули есть в Python?

Модуль — это файл с Python Код. Код может быть представлен в виде переменных, функций или определенного класса. Имя файла становится именем модуля.

Например, если имя вашего файла — guru99.py, имя модуля будет guru99. Благодаря функциональности модуля вы можете разбить свой код на разные файлы вместо того, чтобы писать все в одном файле.

В чём Python модуль импорта?

Файл считается модулем в PythonДля использования модуля необходимо импортировать его с помощью... Импортировать ключевое слово. Функции или переменные, находящиеся внутри файла, можно использовать в другом файле, импортировав модуль. Эта функциональность доступна и в других языках, таких как... TypeScript, Javaсценарий, Java, Руби и т.д.

Как создать и импортировать модуль в 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 для импорта

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

Если вам нужно импортировать только определенные элементы, вы можете использовать ключевое слово «from», чтобы импортировать нужные вам данные.

Итак, синтаксис

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

Структура папок, используемая для тестирования кода, следующая:

modtest/
	test.py
	display.py	

В файле test.py есть две функции, как показано ниже:

Имя файла: 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()` является встроенной функцией в 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']

Packages

Пакет — это каталог, в котором определены все модули. Чтобы сделать Python Интерпретатор рассматривает это как пакет, в вашей директории должен находиться файл __init__.py. Файл __init__.py превращает директорию в пакет. Вот структура пакета, с которым мы будем работать.

Пакеты в Python

Название пакета мой пакетДля начала работы с пакетом создайте директорию с именем mypackage/. Внутри этой директории создайте пустой файл с именем __init__.py. Создайте еще 3 файла: module1.py, module2.py и module3.py и определите функции, как показано на скриншоте. Ниже приведены подробности о файлах module1.py, module2.py и module3.py.

модуль1.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")

модуль2.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")

модуль3.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 импортируется и получает псевдоним как mod1Аналогичным образом вы можете использовать другие модули 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 и выведя его на экран. В результате вы получите список каталогов, как показано ниже:

importsys
print(sys.path)

Выход:

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

Вы также можете изменить путь и сохранить каталоги в соответствии с вашими требованиями.

Использование псевдонима модуля при импорте

Вы также можете преобразовать имя модуля в более короткую форму, присвоив ему псевдоним. Псевдоним можно создать с помощью... as ключевое слово.

Синтаксис:

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)

Для модуля тестирования используется псевдоним 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 с модулем3.py и последний модуль4.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Вернитесь туда, где находится код.

Часто задаваемые вопросы (FAQ)

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 и Python.Torв виде модулей. Команды также разделяют свои собственные конвейеры на многократно используемые модули и пакеты, а затем импортируют общие функции предварительной обработки и обучения во все скрипты.

Да. GitHub Copilot и помощники Agentic предлагают строки импорта по мере ввода, добавляют недостающие импорты и помогают устранить ошибки импорта. Всегда проверяйте, установлен ли модуль и соответствует ли его имя вашей среде, прежде чем доверять предложенным вариантам.

Подведем итог этой публикации следующим образом: