Set_up: Ich habe eine .py-Datei für jede Funktion, die ich in einem Programm verwenden muss.
In diesem Programm muss ich die Funktion aus den externen Dateien aufrufen.
Ich habe es versucht:
from file.py import function(a,b)
Aber ich bekomme den Fehler:
ImportError: Kein Modul mit dem Namen 'file.py'; Datei ist kein Paket
Wie kann ich dieses Problem beheben?
Es ist nicht notwendig, beim Importieren file.py
hinzuzufügen. Schreiben Sie einfach from file import function
und rufen Sie dann die Funktion mit function(a, b)
auf. Der Grund dafür, dass dies möglicherweise nicht funktioniert, liegt daran, dass file
eines der Kernmodule von Python ist. Ich empfehle Ihnen, den Namen Ihrer Datei zu ändern.
Wenn Sie versuchen, Funktionen aus a.py
in eine Datei mit dem Namen b.py
zu importieren, müssen Sie sicherstellen, dass a.py
und b.py
im selben Verzeichnis liegen.
Zunächst benötigen Sie keinen .py
.
Wenn Sie eine Datei a.py
haben, haben Sie einige Funktionen:
def b():
# Something
return 1
def c():
# Something
return 2
Und Sie möchten sie in z.py
importieren, müssen Sie schreiben
from a import b, c
Sie können dies auf zwei Arten tun. Zuerst müssen Sie nur die gewünschte Funktion aus file.py importieren. Verwenden Sie dazu
from file import function
Eine andere Möglichkeit ist, die gesamte Datei zu importieren
import file as fl
Dann können Sie jede Funktion in file.py mit aufrufen
fl.function(a,b)
Speichern Sie zuerst die Datei im .py-Format (z. B. my_example.py
) . Und wenn diese Datei über Funktionen verfügt,
def xyz():
--------
--------
def abc():
--------
--------
In der aufrufenden Funktion müssen Sie nur die folgenden Zeilen eingeben.
dateiname: mein_example2.py
=============================
import my_example.py
a = my_example.xyz()
b = my_example.abc()
=============================
Kam über das gleiche Feature, aber ich musste das unten machen, damit es funktioniert.
Wenn Sie 'ModuleNotFoundError: No module named' sehen, benötigen Sie wahrscheinlich den Punkt (.) Vor dem Dateinamen (siehe unten).
von .fileimportieren
Sie können die Funktion auch aus einem anderen Verzeichnis aufrufen, falls Sie die Funktion nicht in demselben Verzeichnis haben möchten, in dem Sie arbeiten. Sie können dies auf zwei Arten tun (vielleicht gibt es mehr Alternativen, aber diese haben für mich funktioniert).
Alternative 1 Ändern Sie vorübergehend Ihr Arbeitsverzeichnis
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 Fügen Sie das Verzeichnis, in dem Sie Ihre Funktion haben, zu sys.path hinzu
import sys
sys.path.append("**Put here the directory where you have the file with your function**")
from file import function
Sie müssen nicht file.py
hinzufügen.
Behalten Sie einfach die Datei am selben Ort wie die Datei, von der Sie sie importieren möchten. Dann importieren Sie einfach Ihre Funktionen:
from file import a, b
In MathMethod.Py.
def Add(a,b):
return a+b
def subtract(a,b):
return a-b
In Main.Py
import MathMethod as MM
print(MM.Add(200,1000))
Ausgabe: 1200
Benennen Sie das Modul in etwas anderes als "Datei" um.
Stellen Sie dann auch sicher, wenn Sie die Funktion aufrufen:
1) Wenn Sie das gesamte Modul importieren, wiederholen Sie den Namen des Moduls beim Aufruf:
import module
module.function_name()
oder
import pizza
pizza.pizza_function()
2) oder wenn Sie bestimmte Funktionen, Funktionen mit einem Aliasnamen oder alle Funktionen, die * verwenden, importieren, wiederholen Sie den Modulnamen nicht:
from pizza import pizza_function
pizza_function()
oder
from pizza import pizza_function as pf
pf()
oder
from pizza import *
pizza_function()
Die Datei sollte sich am selben Ort befinden wie die Python-Dateien, die Sie importieren möchten. Auch 'aus Datei Importfunktion' reicht aus.
in meinem Fall habe ich meine Datei helper.scrap.py
benannt und konnte sie nicht funktionieren lassen, bis ich helper.py
geändert habe.
Wenn sich Ihre Datei in einer anderen Paketstruktur befindet und Sie sie aus einem anderen Paket aufrufen möchten, können Sie sie auf folgende Weise aufrufen:
Nehmen wir an, Sie haben in Ihrem Python-Projekt folgende Paketstruktur:
in - com.my.func.DifferentFunction
Python-Datei haben Sie einige Funktionen wie:
def add(arg1, arg2):
return arg1 + arg2
def sub(arg1, arg2) :
return arg1 - arg2
def mul(arg1, arg2) :
return arg1 * arg2
Und Sie möchten verschiedene Funktionen von Example3.py
aufrufen, und zwar auf folgende Weise:
Definieren Sie die Importanweisung in Example3.py
- Datei, um alle Funktionen zu importieren
from com.my.func.DifferentFunction import *
oder definieren Sie jeden Funktionsnamen, den Sie importieren möchten
from com.my.func.DifferentFunction import add, sub, mul
Dann können Sie in Example3.py
eine Funktion zum Ausführen aufrufen:
num1 = 20
num2 = 10
print("\n add : ", add(num1,num2))
print("\n sub : ", sub(num1,num2))
print("\n mul : ", mul(num1,num2))
Ausgabe:
add : 30
sub : 10
mul : 200
Angenommen, die Datei, die Sie aufrufen möchten, ist eine andere Datei.py, und die Methode, die Sie aufrufen möchten, ist Methode1. Dann importieren Sie zuerst die Datei und dann die Methode
from anotherfile import method1
wenn method1 Teil einer Klasse ist, lassen Sie die Klasse class1 sein
from anotherfile import class1
erstellen Sie dann ein Objekt von Klasse1. Nehmen Sie an, der Objektname lautet ob1
ob1 = class1()
ob1.method1()
fügen Sie einen Punkt (.) vor einem Dateinamen hinzu, wenn Sie diese Datei importieren möchten, die sich in demselben Verzeichnis befindet, in dem Sie Ihren Code ausführen.
Zum Beispiel führe ich eine Datei mit dem Namen a.py aus und möchte eine Methode mit dem Namen addFun importieren, die in b.py geschrieben ist, und b.py befindet sich im selben Verzeichnis
aus .b importieren addFun