1243 Stimmen

Wie kann ich andere Python-Dateien importieren?

Wie kann ich andere Dateien in Python importieren?

  1. Wie genau kann ich eine bestimmte Python-Datei importieren, z. B. import file.py ?
  2. Wie kann ich einen Ordner anstelle einer bestimmten Datei importieren?
  3. Ich möchte eine Python-Datei dynamisch zur Laufzeit laden, basierend auf dem Benutzer Eingabe.
  4. Ich möchte wissen, wie ich nur einen bestimmten Teil aus der Datei laden kann.

Zum Beispiel, in main.py Ich habe:

from extra import *

Damit habe ich zwar alle Definitionen in extra.py , obwohl ich vielleicht nur eine einzige Definition brauche:

def gap():
    print
    print

Was füge ich dem import Anweisung, um einfach die gap de extra.py ?

27voto

Sanyal Punkte 816

Dokument importieren .. -- Link als Referenz

El __init__.py Dateien erforderlich sind, damit Python die Verzeichnisse als Pakete enthaltend behandelt, wird dies getan, um zu verhindern, dass Verzeichnisse mit einem gemeinsamen Namen, wie z.B. string, unbeabsichtigt gültige Module verstecken, die später auf dem Modulsuchpfad auftreten.

__init__.py kann einfach eine leere Datei sein, aber sie kann auch Initialisierungscode für das Paket ausführen oder die __all__ variabel.

mydir/spam/__init__.py
mydir/spam/module.py
import spam.module
or
from spam import module

24voto

Devendra Bhat Punkte 1059
from file import function_name  ######## Importing specific function
function_name()                 ######## Calling function

y

import file              ######## Importing whole package
file.function1_name()    ######## Calling function
file.function2_name()    ######## Calling function

Hier sind die zwei einfachen Möglichkeiten, die ich inzwischen verstanden habe. Stellen Sie sicher, dass die Datei "file.py", die Sie als Bibliothek importieren möchten, nur in Ihrem aktuellen Verzeichnis vorhanden ist.

19voto

Sid Punkte 2118

Wenn die definierte Funktion in einer Datei steht x.py :

def greet():
    print('Hello! How are you?')

In der Datei, in die Sie die Funktion importieren, schreiben Sie Folgendes:

from x import greet

Dies ist nützlich, wenn Sie nicht alle Funktionen einer Datei importieren möchten.

9voto

Svend Punkte 7527

Ich möchte diesen Hinweis hinzufügen, den ich an anderer Stelle nicht sehr deutlich gemacht habe; innerhalb eines Moduls/Pakets muss beim Laden aus Dateien dem Modul-/Paketnamen das mymodule . Stellen Sie sich vor: mymodule so gestaltet werden:

/main.py
/mymodule
    /__init__.py
    /somefile.py
    /otherstuff.py

Beim Laden somefile.py / otherstuff.py de __init__.py sollte der Inhalt wie folgt aussehen:

from mymodule.somefile import somefunc
from mymodule.otherstuff import otherfunc

9voto

palotasb Punkte 3611

Wenn Sie Python 3.5 oder höher verwenden, können Sie importlib.util zum direkten Import einer .py Datei an einem beliebigen Ort als Modul zu speichern, ohne dass eine Änderung der sys.path .

import importlib.util
import sys

def load_module(file_name, module_name)
    spec = importlib.util.spec_from_file_location(module_name, file_name)
    module = importlib.util.module_from_spec(spec)
    sys.modules[module_name] = module
    spec.loader.exec_module(module)
    return module

El file_name muss eine Zeichenkette oder ein pfadähnliches Objekt sein. Der module_name ist erforderlich, weil alle geladenen Python-Module einen (gepunkteten) Modulnamen haben müssen (wie sys , importlib , oder importlib.util ), aber Sie können jeden verfügbaren Namen für dieses neue Modul wählen.

Sie können diese Funktion wie folgt verwenden:

my_module = load_module("file.py", "mymod")

Nachdem es einmal in den Python-Prozess importiert wurde, indem die load_module() ist das Modul unter dem angegebenen Modulnamen importierbar.

# file.py =
print(f"{__name__} imported (file.py)")
# =========

# one.py ==
print(f"{__name__} imported (one.py)")
load_module("file.py", "mymod")
import two
# =========

# two.py ==
print(f"{__name__} imported (two.py)")
import mymod
# =========

Mit den oben genannten Dateien können Sie den folgenden Befehl ausführen, um zu sehen, wie file.py importierbar geworden.

$ python3 -m one
__main__ imported (one.py)
two imported (two.py)
mymod imported (file.py)

Diese Antwort basiert auf der offiziellen Python-Dokumentation: importlib : Direktes Importieren einer Quelldatei.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X