Как вызвать функцию из другого .py файла?
Описание проблемы:
Я пытаюсь импортировать функцию из файла Python, но сталкиваюсь с ошибкой. У меня есть файл с именем file.py
, который содержит функцию с названием function
. Мой код для импорта выглядит следующим образом:
from file.py import function(a, b)
Однако при выполнении этого кода возникает ошибка:
ImportError: No module named 'file.py'; file is not a package
Как правильно импортировать функцию из файла file.py
? Есть ли особенности в синтаксисе импорта Python, которые я должен учитывать? Буду благодарен за помощь!
5 ответ(ов)
Сначала импортируйте function
из file.py
:
from file import function
Позже вызовите функцию следующим образом:
function(a, b)
Обратите внимание, что file
является одним из основных модулей Python, поэтому я рекомендую изменить имя файла file.py
на что-то другое.
Также учтите, что если вы пытаетесь импортировать функции из a.py
в файл под названием b.py
, убедитесь, что a.py
и b.py
находятся в одной директории.
Когда вы импортируете из другого файла, не добавляйте расширение .py
в имени файла.
Предположим, что file_a.py
содержит некоторые функции:
def f():
return 1
def g():
return 2
Чтобы импортировать эти функции в file_z.py
, сделайте следующее:
from file_a import f, g
Метод 1. Импортируйте конкретную функцию из файла file.py:
from file import function
Метод 2. Импортируйте весь файл:
import file as fl
После этого, чтобы вызвать любую функцию из file.py, используйте:
fl.function(a, b)
Вы можете вызвать функцию из другого каталога, если по каким-то причинам не хотите или не можете иметь её в том же каталоге, в котором вы работаете. Существует два способа сделать это (возможно, есть и другие альтернативы, но эти методы работали для меня).
Альтернатива 1
Временно измените текущий рабочий каталог:
import os
os.chdir("**Укажите здесь путь к каталогу, где находится ваш файл с функцией**")
from file import function
os.chdir("**Укажите здесь путь к каталогу, в котором вы работали**")
Альтернатива 2
Добавьте каталог, в котором находится ваша функция, в sys.path
:
import sys
sys.path.append("**Укажите здесь путь к каталогу, где находится ваш файл с функцией**")
from file import function
Оба метода позволят вам импортировать функцию из другого каталога, так что выбирайте тот, который удобнее для вашего случая!
Чтобы устранить ошибку
ModuleNotFoundError: No module named
попробуйте использовать точку (.
) перед именем файла для выполнения относительного импорта:
from .file import function
Это должно помочь Python правильно найти и импортировать необходимый модуль.
Как получить даты/времена создания и изменения файла?
Как получить имя функции в виде строки?
Как получить возвращаемое значение из потока?
Конфигурация логгера для записи в файл и вывода на stdout
Определение имени функции изнутри самой функции