Автор оригинала: Shubham Sayon.
Резюме: Чтобы импортировать модуль, указанный полный путь, могут быть использованы следующие методы:
- Используя
ImportLibмодуль - Использование
SourceFileloaderкласс - Использование
sysspath.append ()функция - Добавление __init__ файл в папку, содержащую модуль, а затем импортировать его
Проблема: Как импортировать модуль, если его полный путь был дан?
Пример: Рассмотрим, что у нас есть следующее расположение файлов:
python
|--main.py
|calculator
|-----add.py Учитывая вышеуказанные среды проекта, мы хотим Импорт Модуль Добавить из пакета калькулятора в нашем main.py класс, чтобы мы получили желаемый результат. Добавленный модуль содержит функцию с именем Добавить () который возвращает сумму двух чисел. Следовательно, в этом примере мы стремимся импортировать модуль Добавить и получить сумма из двух чисел.
x = int(input("first no."))
y = int(input("second no."))
r = add(x, y)
print("Sum: ", r)
Желаемый выход:
first no. 89 second no. 99 Sum: 188
Давайте посмотрим на различные методы, которые могут быть использованы для импорта модуля Добавить с его данного пути.
Решения:
Способ 1: Использование модуля ImportLib
ImportLib Модуль в Python предлагает две цели:
- Это обеспечивает реализацию
Импортутверждение. - Он предоставляет компоненты
ИмпортЗаявление, которое несут ответственность за работуИмпортутверждение. Это позволяет пользователям создавать свои пользовательские объекты и воспроизводить с ними для использования процесса импорта в соответствии с их потребностями.
Поэтому мы можем использовать силу ImportLib Модуль в нашем коде для импорта пользовательских пакетов из данного пути.
Посмотрите на следующую программу, которая демонстрирует использование ImportLib Модуль для импорта пакетов (пожалуйста, следуйте комментариям, чтобы получить лучшее сцепление на данный код):
import importlib.util
# function to specify the module that needs to be imported relative to the package and path of the module
spec = importlib.util.spec_from_file_location("add", "C:\\Users\\Shubham-PC\\PycharmProjects\\pythonProject1"
"\\calculator\\add.py")
# creating a new module based on spec
foo = importlib.util.module_from_spec(spec)
# exec_module :- An abstract method that executes the module in its own namespace when a module is imported or reloaded.
spec.loader.exec_module(foo)
# Program to use the imported add module
x = int(input("first no."))
y = int(input("second no."))
r = foo.add(x, y)
print("Sum: ", r)
Выход:
first no. 89 second no. 99 Sum: 188
Отказ от ответственности: вышеуказанный метод будет работать для Python 3.5. и выше
Способ 2: Использование класса SourceFileLoader
Если вы используете Python 3.3 или выше, вы можете быть очарованы для использования SourceFileloader класс. Это абстрактный базовый класс, который используется для реализации загрузки источника файла.
Давайте посмотрим на следующий код, чтобы понять использование SourceFileloader Класс для импорта пакетов с данного пути (пожалуйста, следуйте комментариям в коде для лучшего захвата):
from importlib.machinery import SourceFileLoader
# importing the add module from the calculator package using the path
foo = SourceFileLoader("add",
"C:\\Users\\Shubham-PC\\PycharmProjects\\pythonProject1\\calculator\\add.py").load_module()
# code to use the imported add module of the calculator package
x = int(input("first no."))
y = int(input("second no."))
r = foo.add(x, y)
print("Sum: ", r)Выход
first no. 89 second no. 99 Sum: 188
Метод 3: Использование функции SYSPPATH.append ()
Чтобы импортировать модуль в свой код Python, вы можете использовать sysspath.append () Функция для добавления каталога требуемого модуля в переменную среды. Список каталогов, которые Python ищет необходимые модули и файлы, хранятся в путь атрибут sys модуль. Сейчас путь это Список И мы можем использовать Добавить Способ добавить новые каталоги.
Следующая программа демонстрирует вышеуказанную концепцию:
import sys
sys.path.append("C:\\Users\\Shubham-PC\\PycharmProjects\\pythonProject1\\calculator")
import add
x = int(input("first no."))
y = int(input("second no."))
r= add.add(x,y)
print("Sum: ",r)Выход:
first no. 89 second no. 99 Sum: 188
Способ 4: Создание пакета с файлом __init__
Учитывая, что импортируемый пакет находится в том же корневой папке, что и класс, который импортирует модуль пакета, есть другой способ импорта модуля в нашем коде. Чтобы импортировать модуль, вы должны убедиться, что папка, содержащая модуль, имеет файл с именем __init__ добавил к нему. Этот файл вообще пуст. Затем импортируйте модуль в свой код как из
Давайте посмотрим на следующий код, чтобы узнать, как это работает:
from calculator.add import add
x = int(input("first no."))
y = int(input("second no."))
r = add(x, y)
print("Sum: ", r)Выход:
first no. 89 second no. 99 Sum: 188
Осторожно: корневая папка класса импортирует модуль и каталог, который содержит модуль вместе с __init__ Файл, должен быть одинаковым. Другими словами, оба они должны быть в корневой папке проекта.
Относительный против абсолютного импорта в Python
Прежде чем мы заключаем эту статью, мы должны понимать тонкую разницу между относительным импортом и абсолютным импотом в Python.
| Абсолютный путь | Относительный путь |
| Импорт с использованием полного пути. (Для e.g. из корневой папки проектов до нужного модуля.) | Импорт относительно текущего местоположения относительно расположения модуля для импортированного. Относительный импорт используют нотацию DOT. |
| Абсолютный импорт будет оставаться действительным, даже когда местоположение отчетности импорта изменяется. | Относительный импорт не будет работать, если расположение изменений оператора импорта. |
| Пример: учитывая ту же аранжировку каталога, указанное в начале статьи. Из калькулятора импортного добавления (вход («первый нет».)) (вход («второй нет».)) (X, Y) Печать («сумма:», R) | Пример: учитывая ту же аранжировку каталога, указанное в начале статьи. От калькулятора импортного добавления (вход («первый нет».)) (вход («второе нет».)). Добавить (x, y) Печать (“Сумма:”, R) |
Заключение
Таким образом, из вышеперечисленного обсуждения мы можем сделать вывод, что для импорта модуля, указанного в полном пути, можно использовать следующие методы:
- Используя
ImportLibмодуль - С использованием
SourceFileloader.класс - С использованием
sys.path.append ()функция - Добавление
__init__Файл в папку, содержащую модуль, а затем импортировать Это
Позже мы также обсудили ключевые различия между относительным и абсолютным импотом.
Я надеюсь, что эта статья была полезна, и вам удалось что-то получить из этого. Пожалуйста, оставайтесь настроенными для более интересных вещей!
Куда пойти отсюда?
Достаточно теории, давайте познакомимся!
Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?
Практические проекты – это то, как вы обостряете вашу пилу в кодировке!
Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?
Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.
Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.
Присоединяйтесь к свободному вебинару сейчас!
Я профессиональный Python Blogger и Content Creator. Я опубликовал многочисленные статьи и создал курсы в течение определенного периода времени. В настоящее время я работаю полный рабочий день, и у меня есть опыт в областях, таких как Python, AWS, DevOps и Networking.
Вы можете связаться со мной @: