Как импортировать модуль в python 3 из другой папки
Перейти к содержимому

Как импортировать модуль в python 3 из другой папки

  • автор:

Как импортировать модуль в python 3 из другой папки

В случаях, когда в программу на Python необходимо импортировать пакет, находящийся в произвольной папке, можно воспользоваться добавлением пути к этой папке в список системных директорий c помощью sys.path.insert :

import sys sys.path.insert(1, 'path') import package_name 

Для примера рассмотрим следующую структуру проекта:

project/ web/ app.py lib/ mylib.py 

Для импорта mylib.py в app.py :

import sys sys.path.insert(1, '../lib') import mylib 

Альтернативным способом является использование sys.path . Например, для добавления родительской папки:

import sys sys.path.append('..') import package_from_parent_dir 

Работа с модулями: создание, подключение инструкциями import и from

Python 3 логотип

Модулем в Python называется любой файл с программой (да-да, все те программы, которые вы писали, можно назвать модулями). В этой статье мы поговорим о том, как создать модуль, и как подключить модуль, из стандартной библиотеки или написанный вами.

Каждая программа может импортировать модуль и получить доступ к его классам, функциям и объектам. Нужно заметить, что модуль может быть написан не только на Python, а например, на C или C++.

Подключение модуля из стандартной библиотеки

Подключить модуль можно с помощью инструкции import. К примеру, подключим модуль os для получения текущей директории:

 import указывается название модуля. Одной инструкцией можно подключить несколько модулей, хотя этого не рекомендуется делать, так как это снижает читаемость кода. Импортируем модули time и random.
 
 

Использование псевдонимов

Если название модуля слишком длинное, или оно вам не нравится по каким-то другим причинам, то для него можно создать псевдоним, с помощью ключевого слова as.

 

Инструкция from

Подключить определенные атрибуты модуля можно с помощью инструкции from. Она имеет несколько форматов:

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

Следует заметить, что не все атрибуты будут импортированы. Если в модуле определена переменная __all__ (список атрибутов, которые могут быть подключены), то будут подключены только атрибуты из этого списка. Если переменная __all__ не определена, то будут подключены все атрибуты, не начинающиеся с нижнего подчёркивания. Кроме того, необходимо учитывать, что импортирование всех атрибутов из модуля может нарушить пространство имен главной программы, так как переменные, имеющие одинаковые имена, будут перезаписаны.

Создание своего модуля на Python

Теперь пришло время создать свой модуль. Создадим файл mymodule.py, в которой определим какие-нибудь функции:

Теперь в этой же папке создадим другой файл, например, main.py:
Выведет:
Поздравляю! Вы сделали свой модуль! Напоследок отвечу ещё на пару вопросов, связанных с созданием модулей:

Как назвать модуль?

Помните, что вы (или другие люди) будут его импортировать и использовать в качестве переменной. Модуль нельзя именовать также, как и ключевое слово (их список можно посмотреть тут). Также имена модулей нельзя начинать с цифры. И не стоит называть модуль также, как какую-либо из встроенных функций. То есть, конечно, можно, но это создаст большие неудобства при его последующем использовании.

Куда поместить модуль?

Туда, где его потом можно будет найти. Пути поиска модулей указаны в переменной sys.path. В него включены текущая директория (то есть модуль можно оставить в папке с основной программой), а также директории, в которых установлен python. Кроме того, переменную sys.path можно изменять вручную, что позволяет положить модуль в любое удобное для вас место (главное, не забыть в главной программе модифицировать sys.path).

Можно ли использовать модуль как самостоятельную программу?

Можно. Однако надо помнить, что при импортировании модуля его код выполняется полностью, то есть, если программа что-то печатает, то при её импортировании это будет напечатано. Этого можно избежать, если проверять, запущен ли скрипт как программа, или импортирован. Это можно сделать с помощью переменной __name__, которая определена в любой программе, и равна "__main__", если скрипт запущен в качестве главной программы, и имя, если он импортирован. Например, mymodule.py может выглядеть вот так:

Для вставки кода на Python в комментарий заключайте его в теги

Модуль импорта в Python с примерами

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

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

Что такое модуль импорта Python?

Файл рассматривается как модуль в Python. Чтобы использовать модуль, вам необходимо импортировать его, используя импорт ключевое слово. Функция или переменные, присутствующие внутри файла, могут быть использованы в другом файле путем импорта модуля. Эта функциональность доступна на других языках, таких как машинописный текст, JavaScript, 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 импортируйте файл Moduletest.py, как показано ниже:

import test

При импорте вам не обязательно указывать test.py, а только имя файла.

Шаг 5) Затем вы можете вызвать функцию display_message() из test.py внутри display.py, вам нужно использовать имя_модуля.имя_функции.

Import test print(test.display_message())

Шаг 6) Когда вы выполните display.py, вы получите следующее:wing Вывод:

Welcome to Guru99 Tutorials!

Импорт класса в Python

Ранее мы видели простой модуль с функцией. Здесь будет создан класс и ссылка на класс внутри другого файла.

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

myproj/ Car.py display.py

Создайте файл Car.py со следующими параметрами:wing код:

Имя файла: 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 есть атрибуты name_name, model и manu_year. Функции, определенные внутри класса, — car_de.tails(), 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 print(display_message1()) Name Error: name 'display_message1' is not defined

Импорт всего из модуля

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

Import module
from module import *

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

modtest/ test.py display.py

Фоллоwing это код деtails внутри 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)

Тест имени модуля используется для ссылки на функцию и переменные внутри теста модуля.

Вывод:

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

Название пакета мой пакет. Чтобы начать работу с пакетом, создайте каталог package/. Внутри каталога создайте пустой файл с именем __init__.py. Создайте еще 3 файла Module1.py, Module2.py и Module3.py и определите функции, как показано на снимке экрана. Вот деtails из модуля1.py,модуля2.py и модуля3.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 импортируется и получает псевдоним как мод1. Аналогично вы можете использовать другие модули mod2.py и modul3.py из моего пакета.

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 имя модуля импорта, интерпретатор пытается найти модуль. Он ищет модуль в списке встроенных модулей. Later в целом каталоги, определенные внутри sys.path.

Подводя итог, переводчик делает следующее:wing найдите модуль:

  1. В вашем текущем каталоге.
  2. В списке встроенных модулей
  3. Внутри каталогов sys.path

Вы можете получить деtails 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']

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

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

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

import filename as alias name

Структура папок для тестирования кода будет следующей:

Mod test/ test.py display.py

Фоллоwing это код внутри 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

Корневая папка — мой проект/. Он имеет две подпапки package1 и package2.

Папка package1 содержит два модуля: Module1.py и Module2.py.

В папке package2 есть один класс myclass.py, подпакет subpkg с модулем3.py и последний модуль4.py.

  • В файле mod1.py есть функция myfunc1.
  • В файле mod2.py есть функция myfunc2.
  • В mod3.py есть функция myfunc3.
  • В файле mod4.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()

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

Вот преимущества использования абсолютного импорта:

  • Становится легко отслеживать модули для проверки кода.
  • Простой в использовании и очень простой.
  • Если проект будет перемещен по другому пути, импорт останется прежним.

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

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

  • Путь импорта может оказаться очень длинным, если модули вложены или имя модулей длинное.

Использование относительного импорта

Учитывая ту же структуру папок, упомянутую ниже, мы увидим, как импортировать ее, используя относительный импорт.

При относительном импорте импортируемый модуль относится к текущему местоположению, то есть месту, где присутствует оператор импорта.

Синтаксис

При относительном импорте вам необходимо добавить точку (.) перед именем модуля при импорте с использованием от.

Перед именем модуля будут стоять 2 точки (..), если модуль находится на уровень выше текущего местоположения.

Ссылаясь на рисунок структуры папок, упомянутый выше, мы имеем следующее:wing модули с их функцией, на которую нам нужно обратиться.

  • В файле mod1.py есть функция myfunc1.
  • В файле mod2.py есть функция myfunc2.
  • В mod3.py есть функция myfunc3.
  • В файле mod4.py есть функция myfunc4.

Для работы с функциейmyfunc1 вам потребуется импортировать следующим образом:

from .module1 import myfunc1

Для работы с функцией myfunc3 вам потребуется импортировать следующим образом:

from .subpkg.module3 import myfunc3

Преимущества относительного импорта

  • С относительным импортом легко работать.
  • Из текущего местоположения импорт может быть сокращен по сравнению с абсолютным импортом.

Недостатки относительного импорта

  • Используя относительный импорт, трудно отследить, где находится код.

Обзор

  • Импорт в Python помогает обращаться к коду, т. е. к функциям/объектам, записанным в другом файле. Он также используется для импорта библиотек/пакетов Python, которые установлены с помощью pip (менеджер пакетов Python), а затем вам необходимо использовать их в своем коде.
  • Функциональность импорта доступна на других языках, таких как машинописный текст, JavaScript, Java, Ruby и т. д.
  • Модуль Python — это код, написанный внутри файла, например (test.py). Внутри вашего файла вы можете определить переменные, функции или класс. Весь файл становится модулем и может быть импортирован в другой файл для ссылки на код.
  • Благодаря функциональности модуля вы можете разбить свой код на разные файлы вместо того, чтобы писать все в одном файле. Later, используя импорт, вы можете обратиться к коду внутри нужного вам файла.
  • Python имеет встроенные модули, а также внешние библиотеки/пакеты, установленные с помощью менеджер пакетов питона (pip), например pandas, NumPy и т. д., называются модулями.
  • Вместо импорта всего кода вы можете импортировать только небольшую часть модуля, т. е. только необходимые функции и имена переменных из модуля.
  • Вы также можете преобразовать имя модуля в более короткую форму, присвоив ему псевдоним. Псевдоним можно создать с помощью ключевого слова.
  • Пакет — это каталог, в котором определены все модули. Чтобы интерпретатор Python воспринимал его как пакет, в вашем каталоге должен быть файл __init.py. init.py создает каталог как пакет. Вот макет пакета, над которым мы будем работать.
  • Во время выполнения, когда попадается Python имя модуля импорта, интерпретатор пытается найти модуль. Он ищет модуль в списке встроенных модулей. Later в целом каталоги, определенные внутри sys.path.
  • Для абсолютного импорта вам необходимо добавить полный путь к вашему модулю прямо из корневой папки проекта.
  • При относительном импорте импортируемый модуль относится к текущему местоположению, то есть месту, где присутствует оператор импорта.
  • Онлайн-компилятор Python (редактор/интерпретатор/IDE) для запуска кода
  • Учебное пособие по PyUnit: Платформа модульного тестирования Python (с примером)
  • Как установить Python на Windows [IDE Pycharm]
  • Hello World: создайте свою первую программу на Python
  • Переменные Python: как определить/объявить типы строковых переменных
  • Строки Python: замена, объединение, разделение, реверс, верхний и нижний регистр
  • Python TUPLE – упаковка, распаковка, сравнение, нарезка, удаление, ключ
  • Словарь на Python с синтаксисом и примером

Импорт файлов и модулей в Python

Баннер Баннер

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

Импорт файла

Допустим, есть файл file.py , который содержит некоторый код, который нужно использовать в другом файле. Для этого используется оператор import . В другом файле Python достаточно просто написать import file (без расширения .py), и код из file.py станет доступен.

Импорт папки

Для импорта всей папки (которая в Python называется пакетом) используется тот же оператор import , но с добавлением точки и имени файла. Если, например, в папке folder есть файл file.py , то его можно импортировать следующим образом: import folder.file .

Динамический импорт

Динамический импорт позволяет загружать модули на основе пользовательского ввода. Для этого используется функция __import__() или модуль importlib . Например, если имя модуля хранится в переменной module_name , то его можно импортировать следующим образом: __import__(module_name) .

Импорт части файла

Иногда нужно импортировать не весь файл, а только определенную его часть, например, одну функцию. Для этого используется оператор from . import . . Если, например, в файле file.py есть функция function , то ее можно импортировать следующим образом: from file import function .

Все эти способы позволяют гибко управлять импортом файлов и модулей в Python, делая код более структурированным и модульным.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *