web-dev-qa-db-fra.com

Appeler une fonction depuis un autre fichier en Python

Set_up: J'ai un fichier .py pour chaque fonction à utiliser dans un programme.

Dans ce programme, je dois appeler la fonction à partir des fichiers externes.

J'ai essayé:

from file.py import function(a,b)

Mais je reçois l'erreur:

ImportError: Aucun module nommé 'file.py'; le fichier n'est pas un paquet

Comment puis-je résoudre ce problème?

300
user2977230

Il n'est pas nécessaire d'ajouter file.py lors de l'importation. Il suffit d'écrire from file import function, puis d'appeler la fonction à l'aide de function(a, b). La raison pour laquelle cela ne fonctionne peut-être pas, c'est que file est l'un des modules principaux de Python. Je vous suggère donc de modifier le nom de votre fichier.

Notez que si vous essayez d'importer des fonctions de a.py dans un fichier appelé b.py, vous devez vous assurer que a.py et b.py se trouvent dans le même répertoire.

361
Games Brainiac

Tout d'abord, vous n'avez pas besoin d'un .py.

Si vous avez un fichier a.py et que vous avez à l'intérieur quelques fonctions:

def b():
  # Something
  return 1

def c():
  # Something
  return 2

Et vous voulez les importer dans z.py vous devez écrire

from a import b, c
130
Salvador Dali

Vous pouvez le faire de 2 manières. La première consiste simplement à importer la fonction spécifique que vous voulez depuis file.py. Pour ce faire, utilisez

from file import function

Une autre méthode consiste à importer le fichier entier

import file as fl

Ensuite, vous pouvez appeler n’importe quelle fonction dans file.py en utilisant

fl.function(a,b)
28
Pulkit Bansal

Commencez par enregistrer le fichier au format .py (par exemple, my_example.py) . Si ce fichier contient des fonctions,

def xyz():

        --------

        --------

def abc():

        --------

        --------

Dans la fonction d’appel, il vous suffit de taper les lignes ci-dessous.

nom_fichier: mon_exemple2.py

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

import my_example.py


a = my_example.xyz()

b = my_example.abc()

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

9
Nagaraj Simpi

Entré dans la même fonctionnalité, mais je devais faire le ci-dessous pour le faire fonctionner. 

Si vous voyez «ModuleNotFoundError: aucun module nommé», vous avez probablement besoin du point (.) Devant le nom du fichier, comme ci-dessous;

depuis .file fonction d'importation

8
Ricky Boy

Vous pouvez également appeler la fonction depuis un autre répertoire, au cas où vous ne voudriez pas ou ne voudriez pas que la fonction se trouve dans le même répertoire que vous travaillez. Vous pouvez le faire de deux manières (peut-être qu'il y a plus d'alternatives, mais ce sont celles qui ont fonctionné pour moi).

Alternative 1 Modifier temporairement votre répertoire de travail

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

Alternative 2 Ajoutez le répertoire où vous avez votre fonction à 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

Vous n'êtes pas obligé d'ajouter file.py.

Conservez simplement le fichier au même emplacement que celui où vous souhaitez l'importer Ensuite, importez simplement vos fonctions:

from file import a, b
5
Mohan

Dans MathMethod.Py.

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

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

À l'intérieur de Main.Py

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

Sortie: 1200

4
Mahabubuzzaman

Renommez le module en quelque chose d'autre que "fichier".

Ensuite, assurez-vous également lorsque vous appelez la fonction que:

1) si vous importez le module entier, vous répétez le nom du module lorsque vous l'appelez:

import module
module.function_name()

ou

import pizza
pizza.pizza_function()

2) ou si vous importez des fonctions spécifiques, des fonctions avec un alias ou toutes les fonctions utilisant *, vous ne répétez pas le nom du module:

from pizza import pizza_function
pizza_function()

ou

from pizza import pizza_function as pf
pf()

ou

from pizza import *
pizza_function()
2
misterrodger

Vous devriez avoir le fichier au même emplacement que celui des fichiers Python que vous essayez d'importer. Aussi, 'depuis la fonction d'importation de fichier' est suffisant.

2
Girish M

dans mon cas, j'ai nommé mon fichier helper.scrap.py et je ne pouvais pas le faire fonctionner jusqu'à ce que je passe à helper.py 

1
bresleveloper

Si votre fichier se trouve dans une structure de package différente et que vous souhaitez l'appeler à partir d'un package différent, vous pouvez l'appeler de cette manière:

Supposons que vous ayez la structure de paquet suivante dans votre projet python:

 Python package and file structure

dans - com.my.func.DifferentFunction fichier python vous avez une fonction, comme:

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

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

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

Et vous voulez appeler différentes fonctions à partir de Example3.py, puis procédez comme suit:

Définir la déclaration d'importation dans Example3.py - fichier pour importer toutes les fonctions

from com.my.func.DifferentFunction import *

ou définir chaque nom de fonction que vous souhaitez importer

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

Ensuite, dans Example3.py, vous pouvez appeler la fonction pour exécuter:

num1 = 20
num2 = 10

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

Sortie:

 add :  30

 sub :  10

 mul :  200
0
abanmitra

Supposons que le fichier que vous voulez appeler est un autre fichier.py et que la méthode que vous souhaitez appeler soit method1, puis importez d'abord le fichier, puis la méthode

from anotherfile import method1

si method1 fait partie d'une classe, que la classe soit class1, alors 

from anotherfile import class1

puis créez un objet de class1, supposons que le nom de l'objet soit ob1, puis

ob1 = class1()
ob1.method1()
0

ajoutez un point (.) devant un nom de fichier si vous souhaitez importer ce fichier qui se trouve dans le même répertoire que celui où vous exécutez votre code.

Par exemple, je suis en train d'exécuter un fichier nommé a.py et je veux importer une méthode nommée addFun qui est écrite dans b.py, et b.py est-il dans le même répertoire

à partir de .b import addFun

0
Shravan Kumar