Ligar para uma função de outro ficheiro?

set_ Up: tenho um ficheiro .py para cada função que preciso de usar num programa.

Neste programa, preciso de ligar para a função dos ficheiros externos.

Eu tentei.
from file.py import function(a,b)

mas eu entendo o erro:

ImportError: nenhum módulo chamado "file.py'; file is not a package

Como resolvo este problema?

Author: martineau, 2013-12-01

17 answers

Não há necessidade de adicionar {[[0]} durante a importação. Basta escrever from file import function, e depois ligar para a função usando function(a, b). A razão pela qual isto pode não funcionar, é porque file é um dos módulos centrais do Python, por isso sugiro que mude o nome do seu ficheiro.

Lembre-se que se está a tentar importar funções de a.py para um ficheiro chamado b.py, terá de se certificar de que a.py e b.py estão na mesma pasta.

 656
Author: Games Brainiac, 2017-09-16 12:26:43

Em primeiro lugar, não precisas de um .py.

Se tem um ficheiro a.py e dentro tem algumas funções:

def b():
  # Something
  return 1

def c():
  # Something
  return 2

E se queres importá-los em z.py tens de escrever

from a import b, c
 220
Author: Salvador Dali, 2017-09-16 12:22:45
Podes fazer isto de duas maneiras. Primeiro é apenas importar a função específica que você deseja de file.py. para fazer isso use
from file import function

Outra maneira é importar o ficheiro inteiro

import file as fl

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

fl.function(a,b)
 74
Author: Pulkit Bansal, 2017-07-20 07:07:13

Se o seu ficheiro estiver na estrutura de pacotes diferente e quiser chamá-lo de um pacote diferente, então pode chamá-lo dessa forma:

Digamos que tem a seguinte estrutura de pacotes no seu projecto python:

Python package and file structure

Em - com.my.func.DifferentFunction python 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 se quiser chamar funções diferentes de Example3.py, Então da seguinte forma pode fazê-lo:

Defina a declaração de importação no Example3.py - ficheiro para importar toda a função

from com.my.func.DifferentFunction import *

Ou definir cada nome de função que deseja importar

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

Então em {[6] } 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))

Resultado:

 add :  30

 sub :  10

 mul :  200
 58
Author: abanmitra, 2019-01-31 12:32:19

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

Alternativa 1 Alterar temporariamente a sua pasta 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 a pasta onde tem a sua função ao sys.localização

import sys

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

from file import function
 43
Author: Juan Ossa, 2018-03-16 00:29:37
Deparei-me com a mesma característica, mas tive de fazer a parte de baixo para que funcionasse.

Se está a ver 'ModuleNotFoundError: sem módulo chamado', provavelmente precisa do ponto(.) na frente do nome do ficheiro como abaixo;

De .ficheiro importar a função

 25
Author: Ricky Boy, 2018-09-27 21:59:37

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

def xyz():

        --------

        --------

def abc():

        --------

        --------

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

Nome do ficheiro: my_example2.py

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

import my_example.py


a = my_example.xyz()

b = my_example.abc()

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

 13
Author: Nagaraj Simpi, 2017-09-16 12:27:55

Mudar o nome do módulo para algo que não seja 'file'.

Então, certifique-se também quando você está chamando a função que:

1) Se estiver a importar o módulo inteiro, irá reiterar o nome do módulo ao chamá-lo:

import module
module.function_name()

Ou

import pizza
pizza.pizza_function()

2)ou se está a importar funções específicas, funções com um nome alternativo, ou todas as funções usando*, não repete 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()
 13
Author: misterrodger, 2018-10-24 20:08:41

As funções do ficheiro. py (pode (claro) estar em directório diferente) podem ser importadas simplesmente escrevendo primeiro directórios e depois o nome do ficheiro sem a extensão. py:

from directory_name.file_name import function_name

E posterior utilização: function_name()

 13
Author: Weky, 2019-12-24 14:44:54

Lá Dentro MathMethod.Py.

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

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

Lá Dentro Main.Py

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

Resultado: 1200

 9
Author: Mahabubuzzaman, 2018-04-18 08:52:07

Não tens de adicionar file.py.

Basta manter o arquivo no mesmo local com o arquivo de onde você deseja importá-lo. Em seguida, basta importar suas funções:

from file import a, b
 6
Author: Mohan, 2017-09-16 12:29:03

Deverá ter o ficheiro no mesmo local que o dos ficheiros Python que está a tentar importar. Também' a partir da função de importação de arquivos ' é suficiente.

 5
Author: Girish M, 2017-09-16 12:28:37

Adicione um ponto(.) na frente de um nome de arquivo se você quiser importar este arquivo que está no mesmo diretório onde você está executando seu código.

Por exemplo, estou a correr um ficheiro chamado a.py e eu quero importar um método chamado addFun que está escrito em b.py, e b.py existe no mesmo directório De ...B importar addFun
 5
Author: Shravan Kumar, 2019-08-29 14:41:57
Suponha que o arquivo que você quer ligar é anotherfile.py e o método que você deseja chamar é o method1, em seguida, primeiro importar o arquivo e, em seguida, o método
from anotherfile import method1

Se o método 1 faz parte de uma classe, que a classe seja a classe 1, então

from anotherfile import class1

Então crie um objeto da classe 1, suponha que o nome do objeto seja ob1, então

ob1 = class1()
ob1.method1()
 2
Author: Amir Md Amiruzzaman, 2017-12-02 02:02:12
No meu caso, dei um nome ao meu ficheiro e não consegui fazê-lo funcionar até mudar para helper.py
 2
Author: bresleveloper, 2018-11-15 16:59:34
Nenhuma das soluções acima não funcionou para mim. Tenho um erro. Então a minha solução estava a importar abaixo de
from . import filename # without .py  

Dentro do meu primeiro ficheiro defini a função diversão como abaixo

# file name is firstFile.py
def fun():
  print('this is fun')

Dentro do segundo ficheiro vamos dizer que quero chamar a função diversão {[[6]}

from . import firstFile

def secondFunc():
   firstFile.fun() # calling `fun` from the first file

secondFunc() # calling the function `secondFunc` 
 2
Author: NuOne, 2020-07-02 00:38:06

No meu programa principal {[[0]} preciso da função call passGen que gera a barra de senhas e que as funções estão em baixo modules\passwordGen.py

A solução mais rápida e fácil para mim é

Abaixo está a minha estrutura de directórios

enter image description here

Por isso em detectiveROB.py tenho de importar a minha função com a sintaxe abaixo

from modules.passwordGen import passGen

enter image description here

 0
Author: Mansur Ali, 2020-08-24 19:11:37