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?
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.
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
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)
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()
============================
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
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
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
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
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()
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.
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
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:
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
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()
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