Python importing another python file

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

Оператор импорта в Python используется для импорта модулей, которые мы хотим использовать в нашей программе. Модули – это скрипты в Python, содержащие служебные функции, типы, классы и т.д. Есть много модулей, которые мы регулярно используем в программах, такие как sys, os, collections и т.д.

Если мы хотим импортировать встроенные модули в Python или любой сторонний модуль, установленный с помощью диспетчера пакетов, такого как PIP, мы можем очень легко импортировать и использовать их в нашей программе.

import collections import sys

Python ищет модули и пакеты в свойстве sys.path. Этот путь всегда содержит текущий каталог, из которого выполняется сценарий, поэтому любой модуль в текущем каталоге можно импортировать как есть.

Импорт в Python чувствителен к регистру, поэтому import sys и import Sys ищут разные модули для импорта.

Python сначала ищет модуль во встроенных модулях. Если не найден, то ищет модули в текущем каталоге. Итак, если у нас есть файл math.py в том же каталоге, что и наш основной скрипт, он будет загружен при вызове import math, если модуль ‘math’ отсутствует во встроенных модулях. Вы можете получить список встроенных модулей, используя sys.builtin_module_names. На изображении ниже показаны встроенные модули:

Список встроенных модулей в Python

Классы и функции импорта из модуля

Мы также можем импортировать определенные классы из модуля. Таким образом, мы можем импортировать определенные части модуля и использовать их. Это также помогает в написании свободного кода. Мы можем добиться этого, используя ключевое слово from с оператором импорта.

from collections import namedtuple from os import path

Пользовательский модуль импорта

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

Читайте также:  Функция дерево решений python

Импорт в python

У нас есть следующие функции, определенные в файле utils.py.

def add(i, j): return int(i) + int(j) def uppercase(s): return str(s).upper()

Мы можем импортировать его в python_import_examples.py и использовать его функции.

import utils print(utils.add(10,10)) print(utils.uppercase('java'))

Импорт as

Мы можем определить собственное имя для импортированного модуля, используя оператор import as.

# python import as import utils as u print(u.add(10,10)) print(u.uppercase('java'))

Результат будет таким же, как и в предыдущей программе.

Импорт из другого каталога

Если скрипт, который мы импортируем, находится в том же каталоге, то мы можем импортировать его так же, как и встроенные модули. Однако, если скрипт присутствует в другом каталоге, мы можем использовать библиотеку importlib, чтобы импортировать их как модуль.

Скажем, наш Strutils.py имеет следующие функции:

def uppercase(s): return str(s).upper() def lowercase(s): return str(s).lower()

Теперь давайте посмотрим, как использовать importlib для импорта этого скрипта в наш пример.

# Refer: https://docs.python.org/3/library/importlib.html#importing-a-source-file-directly # Refer: https://stackoverflow.com/questions/4383571/importing-files-from-different-folder import importlib, importlib.util def module_from_file(module_name, file_path): spec = importlib.util.spec_from_file_location(module_name, file_path) module = importlib.util.module_from_spec(spec) spec.loader.exec_module(module) return module strutils = module_from_file("strutils", "../mymodule/strutils.py") print(strutils.uppercase('java')) print(strutils.lowercase('DATA'))

Класс импорта из другого файла

Мы можем импортировать скрипты и использовать определенные в них классы с помощью importlib. Допустим, у нас есть классы Person и Student, определенные в файле myclasses.py.

class Person: name = "" def __init__(self, personName): self.name = personName def showName(self): print(self.name) class Student(Person): id = 0 def __init__(self, studentName, studentId): Person.__init__(self, studentName) self.id = studentId def getId(self): return self.id

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

#python import class from another file mc = module_from_file("myclasses", "../mymodule/myclasses.py") p = mc.Person('Pankaj') p.showName() s = mc.Student('David',25) s.showName() print(s.getId())

Обратите внимание, что мы можем сохранить любое имя для импортируемого модуля, это похоже на использование оператора import as.

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

import sys sys.path.append("../mymodule/") from myclasses import Person as PC p = PC('Meghna') p.showName()

Это полезно, когда мы хотим импортировать только определенные классы и функции из импортированного файла. Кроме того, использование этого кода намного проще для понимания.

Читайте также:  Python построение графиков tkinter

Заключение

Оператор импорта Python позволяет нам импортировать модули, определенные классы и функции из модулей. Его очень легко использовать, и, поскольку в большинстве случаев мы работаем со встроенными модулями или модулями, установленными с использованием PIP, нам не нужно писать логику для загрузки скриптов из другого каталога.

Источник

Оцените статью