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 behebe ich dieses Problem?

451
user2977230 1 Dez. 2013 im 10:34

15 Antworten

Beste Antwort

Beim Importieren muss file.py nicht hinzugefügt werden. Schreiben Sie einfach from file import function und rufen Sie die Funktion mit function(a, b) auf. Der Grund, warum dies möglicherweise nicht funktioniert, liegt darin, dass file eines der Kernmodule von Python ist. Ich empfehle daher, den Namen Ihrer Datei zu ändern.

Beachten Sie, dass Sie beim Importieren von Funktionen aus a.py in eine Datei mit dem Namen b.py sicherstellen müssen, dass sich a.py und b.py im selben Verzeichnis befinden.

504
Peter Mortensen 16 Sept. 2017 im 12:26

Angenommen, die Datei, die Sie aufrufen möchten, ist anotherfile.py und die Methode, die Sie aufrufen möchten, ist method1. Importieren Sie dann zuerst die Datei und dann die Methode

from anotherfile import method1

Wenn Methode1 Teil einer Klasse ist, soll die Klasse Klasse1 sein

from anotherfile import class1

Erstellen Sie dann ein Objekt der Klasse1. Angenommen, der Objektname lautet ob1

ob1 = class1()
ob1.method1()
2
Amir Md Amiruzzaman 2 Dez. 2017 im 02:02

Zunächst benötigen Sie kein .py.

Wenn Sie eine Datei a.py haben und darin einige Funktionen haben:

def b():
  # Something
  return 1

def c():
  # Something
  return 2

Und wenn Sie sie in z.py importieren möchten, müssen Sie schreiben

from a import b, c
173
Peter Mortensen 16 Sept. 2017 im 12:22

Wenn sich Ihre Datei in einer anderen Paketstruktur befindet und Sie sie von einem anderen Paket aus aufrufen möchten, können Sie sie folgendermaßen aufrufen:

Angenommen, Sie haben in Ihrem Python-Projekt folgende Paketstruktur:

Python package and file structure

In der com.my.func.DifferentFunction Python-Datei haben Sie eine Funktion 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 dann können Sie dies folgendermaßen tun:

Definieren Sie die Importanweisung in der Example3.py - Datei für den Import aller Funktionen

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 die 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
25
abanmitra 31 Jän. 2019 im 12:32

Sie können die Funktion auch aus einem anderen Verzeichnis aufrufen, falls Sie die Funktion nicht in demselben Verzeichnis haben möchten oder 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
31
Juan Ossa 16 März 2018 im 00:29

Funktionen aus der .py-Datei (können sich (natürlich) in einem anderen Verzeichnis befinden) können einfach importiert werden, indem zuerst Verzeichnisse und dann der Dateiname ohne die Erweiterung .py geschrieben werden:

from directory_name.file_name import function_name

Und später verwendet werden: function_name()

4
Weky 24 Dez. 2019 im 14:44

Benennen Sie das Modul in etwas anderes als "Datei" um.

Stellen Sie dann auch sicher, wenn Sie die Funktion aufrufen, dass:

1) Wenn Sie das gesamte Modul importieren, wiederholen Sie den Modulnamen, wenn Sie es aufrufen:

import module
module.function_name()

Oder

import pizza
pizza.pizza_function()

2) oder wenn Sie bestimmte Funktionen, Funktionen mit einem Alias oder alle Funktionen mit * 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()
10
misterrodger 24 Okt. 2018 im 20:08

Sie können dies auf zwei Arten tun. Zunächst müssen Sie nur die gewünschte Funktion aus file.py importieren. Verwenden Sie dazu

from file import function

Eine andere Möglichkeit besteht darin, die gesamte Datei zu importieren

import file as fl

Dann können Sie jede Funktion in file.py mit aufrufen

fl.function(a,b)
52
Pulkit Bansal 20 Juli 2017 im 07:07

Sie müssen nicht file.py hinzufügen.

Bewahren Sie die Datei einfach am selben Speicherort auf wie die Datei, von der Sie sie importieren möchten. Dann importieren Sie einfach Ihre Funktionen:

from file import a, b
6
Peter Mortensen 16 Sept. 2017 im 12:29

Kam über die gleiche Funktion, aber ich musste die folgenden Schritte ausführen, damit es funktioniert.

Wenn Sie 'ModuleNotFoundError: Kein Modul mit dem Namen' sehen, benötigen Sie wahrscheinlich den Punkt (.) Vor dem Dateinamen wie folgt.

aus der Importfunktion .file

21
Ricky Boy 27 Sept. 2018 im 21:59

Speichern Sie zuerst die Datei im PY-Format (z. B. my_example.py). Und wenn diese Datei Funktionen hat,

def xyz():

        --------

        --------

def abc():

        --------

        --------

In der aufrufenden Funktion müssen Sie nur die folgenden Zeilen eingeben.

Dateiname: my_example2.py

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

import my_example.py


a = my_example.xyz()

b = my_example.abc()

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

13
Peter Mortensen 16 Sept. 2017 im 12:27

Fügen Sie einen Punkt (.) vor einen Dateinamen ein, 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 namens addFun importieren, die in b.py geschrieben ist und b.py befindet sich im selben Verzeichnis

Aus .b import addFun

3
Shravan Kumar 29 Aug. 2019 im 14:41

In MathMethod.Py.

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

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

Innerhalb Main.Py

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

Ausgabe: 1200

7
Mahabubuzzaman 18 Apr. 2018 im 08:52

In meinem Fall habe ich meine Datei helper.scrap.py genannt und konnte sie nicht zum Laufen bringen, bis ich zu helper.py gewechselt bin.

2
bresleveloper 15 Nov. 2018 im 16:59

Sie sollten die Datei am selben Speicherort haben wie die Python-Dateien, die Sie importieren möchten. Auch 'aus Dateiimportfunktion' reicht aus.

4
Peter Mortensen 16 Sept. 2017 im 12:28