it-swarm-pt.tech

Chame uma função de outro arquivo em Python

Set_up: Eu tenho um arquivo .py para cada função que preciso usar em um programa.

Neste programa, eu preciso chamar a função dos arquivos externos.

Eu tentei:

from file.py import function(a,b)

Mas eu recebo o erro:

ImportError: Nenhum módulo chamado 'file.py'; arquivo não é um pacote

Como eu corrijo esse problema?

300
user2977230

Não há necessidade de adicionar file.py durante a importação. Basta escrever from file import function e depois chamar a função usando function(a, b). A razão pela qual isso pode não funcionar, é porque file é um dos módulos principais do Python, então sugiro que você altere o nome do seu arquivo.

Observe que, se você estiver tentando importar funções de a.py para um arquivo chamado b.py, será necessário verificar se a.py e b.py estão no mesmo diretório.

361
Games Brainiac

Primeiro de tudo você não precisa de um .py.

Se você tem um arquivo a.py e dentro você tem algumas funções:

def b():
  # Something
  return 1

def c():
  # Something
  return 2

E você quer importá-los em z.py você tem que escrever

from a import b, c
130
Salvador Dali

Você pode fazer isso de duas maneiras. Primeiro é apenas importar a função específica que você quer do arquivo file.py. Para fazer isso, use

from file import function

Outra maneira é importar o arquivo inteiro

import file as fl

Então você pode chamar qualquer função dentro de file.py usando

fl.function(a,b)
28
Pulkit Bansal

Primeiro, salve o arquivo no formato .py (por exemplo, my_example.py). E se esse arquivo tiver funções,

def xyz():

        --------

        --------

def abc():

        --------

        --------

Na função de chamada você só precisa digitar as linhas abaixo.

file_name: my_example2.py

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

import my_example.py


a = my_example.xyz()

b = my_example.abc()

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

9
Nagaraj Simpi

Veio através do mesmo recurso, mas eu tive que fazer o seguinte para fazer o trabalho. 

Se você está vendo 'ModuleNotFoundError: No module named', você provavelmente precisará do ponto (.) Na frente do nome do arquivo como abaixo;

de .file import funtion

8
Ricky Boy

Você também pode chamar a função de um diretório diferente, caso não possa ou não queira ter a função no mesmo diretório em que está trabalhando. Você pode fazer isso de duas maneiras (talvez existam mais alternativas, mas essas são as que funcionaram para mim).

Alternativa 1 Altere temporariamente seu diretório de trabalho

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**")

Alternativa 2 Adicione o diretório onde você tem sua função para sys.path

import sys

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

from file import function
7
Juan Ossa

Você não precisa adicionar file.py.

Apenas mantenha o arquivo no mesmo local com o arquivo de onde deseja importá-lo. Então apenas importe suas funções:

from file import a, b
5
Mohan

Inside MathMethod.Py.

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

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

Dentro Main.Py

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

Saída: 1200

4
Mahabubuzzaman

Renomeie o módulo para algo diferente de 'arquivo'.

Então também tenha certeza quando você está chamando a função que:

1) se você está importando o módulo inteiro, você reitera o nome do módulo ao chamá-lo:

import module
module.function_name()

ou

import pizza
pizza.pizza_function()

2) ou se você estiver importando funções específicas, funções com um alias ou todas as funções usando *, você não reitera o nome do módulo:

from pizza import pizza_function
pizza_function()

ou

from pizza import pizza_function as pf
pf()

ou

from pizza import *
pizza_function()
2
misterrodger

Você deve ter o arquivo no mesmo local dos arquivos Python que está tentando importar. Também 'da função de importação de arquivos' é suficiente.

2
Girish M

no meu caso eu nomeei meu arquivo helper.scrap.py e não consegui fazer funcionar até que eu mudei para helper.py 

1
bresleveloper

Se o seu arquivo estiver na estrutura de pacotes diferente e você quiser chamá-lo de um pacote diferente, você poderá chamá-lo dessa maneira:

Digamos que você tenha a seguinte estrutura de pacotes em seu projeto python:

Python package and file structure

em - com.my.func.DifferentFunction python file você tem alguma função, como:

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

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

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

E você quer chamar funções diferentes de Example3.py, depois da maneira que você pode fazer isso:

Definir declaração de importação em Example3.py - arquivo para importar todas as funções

from com.my.func.DifferentFunction import *

ou definir cada nome de função que você deseja importar

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

Então em Example3.py você pode chamar a função para executar:

num1 = 20
num2 = 10

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

Saída:

 add :  30

 sub :  10

 mul :  200
0
abanmitra

Suponha que o arquivo que você deseja chamar seja anotherfile.py e o método que você deseja chamar seja method1, importe primeiro o arquivo e, em seguida, o método

from anotherfile import method1

se method1 é parte de uma classe, deixe a classe ser class1, então 

from anotherfile import class1

então crie um objeto de class1, suponha que o nome do objeto seja ob1, então

ob1 = class1()
ob1.method1()
0
Amir Md Amiruzzaman