Вызов функции из другого файла в Python

Set_up: У меня есть файл .py для каждой функции, которую мне нужно использовать в программе.

В этой программе мне нужно вызвать функцию из внешних файлов.

Я пробовал:

from file.py import function(a,b)

Но я получаю ошибку:

ImportError: нет модуля с именем 'file.py'; файл не является пакетом

Как исправить эту проблему?

Ответ 1

При импорте не нужно добавлять file.py. Просто напишите from file import function, а затем вызовите функцию с помощью function(a, b). Причина, по которой это может не работать, заключается в том, что file является одним из основных модулей Python, поэтому я предлагаю вам изменить имя вашего файла.

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

Ответ 2

Прежде всего вам не нужен .py.

Если у вас есть файл a.py и внутри вас есть некоторые функции:

def b():
  # Something
  return 1

def c():
  # Something
  return 2

И вы хотите импортировать их в z.py, вам нужно написать

from a import b, c

Ответ 3

Вы можете сделать это двумя способами. Сначала нужно просто импортировать определенную функцию из файла .py. Для этого используйте

from file import function

Другой способ - импортировать весь файл

import file as fl

Затем вы можете вызвать любую функцию внутри файла file.py, используя

fl.function(a,b)

Ответ 4

Сначала сохраните файл в формате .py(например, my_example.py). И если этот файл имеет функции,

def xyz():

        --------

        --------

def abc():

        --------

        --------

В вызывающей функции вам просто нужно ввести следующие строки.

имя_файла: my_example2.py

============================

import my_example.py


a = my_example.xyz()

b = my_example.abc()

============================

Ответ 5

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

Альтернатива 1 Временно измените ваш рабочий каталог

import os

os.chdir("**Put here the directory where you have the file with your function**")

from file import function

os.chdir("**Put here the directory where you were working**")

Альтернатива 2 Добавьте каталог, в котором у вас есть функция, в sys.path.

import sys

sys.path.append("**Put here the directory where you have the file with your function**")

from file import function

Ответ 6

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

Если вы видите "ModuleNotFoundError: модуль не назван", вам, вероятно, нужна точка (.) Перед именем файла, как показано ниже;

из функции импорта .file

Ответ 7

Вам не нужно добавлять file.py.

Просто сохраните файл в том же месте с файлом, из которого вы хотите его импортировать. Затем просто импортируйте свои функции:

from file import a, b

Ответ 8

Внутри MathMethod.Py.

def Add(a,b):
   return a+b 

def subtract(a,b):
  return a-b

Внутри Main.Py

import MathMethod as MM 
  print(MM.Add(200,1000))

Выход: 1200

Ответ 9

У вас должен быть файл в том же месте, что и файлы Python, которые вы пытаетесь импортировать. Также достаточно "из функции импорта файлов".

Ответ 10

Переименуйте модуль в нечто иное, чем "файл".

Также убедитесь, что при вызове функции:

1) если вы импортируете весь модуль, вы повторяете имя модуля при его вызове:

import module
module.function_name()

или же

import pizza
pizza.pizza_function()

2) или если вы импортируете определенные функции, функции с псевдонимом или все функции, использующие *, вы не повторяете имя модуля:

from pizza import pizza_function
pizza_function()

или же

from pizza import pizza_function as pf
pf()

или же

from pizza import *
pizza_function()

Ответ 11

в моем случае я назвал свой файл helper.scrap.py и не смог заставить его работать, пока я не изменил на helper.py

Ответ 12

Предположим, что файл, который вы хотите вызвать, - anotherfile.py, а метод, который вы хотите вызвать, - method1, затем сначала импортируйте файл, а затем метод

from anotherfile import method1

если метод1 является частью класса, пусть класс будет классом1, то

from anotherfile import class1

затем создайте объект класса 1, предположим, что имя объекта ob1, затем

ob1 = class1()
ob1.method1()

Ответ 13

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

Допустим, у вас есть следующая структура пакета в вашем проекте Python:

Python package and file structure

in - com.my.func.DifferentFunction Python файл, у вас есть какая-то функция, например:

def add(arg1, arg2):
    return arg1 + arg2

def sub(arg1, arg2) :
    return arg1 - arg2

def mul(arg1, arg2) :
    return arg1 * arg2

И вы хотите вызывать различные функции из Example3.py, а затем сделать это следующим образом:

Определить оператор импорта в Example3.py - файле для импорта всех функций

from com.my.func.DifferentFunction import *

или определите имя каждой функции, которую вы хотите импортировать

from com.my.func.DifferentFunction import add, sub, mul

Затем в Example3.py вы можете вызвать функцию для выполнения:

num1 = 20
num2 = 10

print("\n add : ", add(num1,num2))
print("\n sub : ", sub(num1,num2))
print("\n mul : ", mul(num1,num2))

Выход:

add :  30

 sub :  10

 mul :  200