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 ?

7voto

supreme Punkte 345

Der beste Weg, .py-Dateien zu importieren, ist die Verwendung von __init__.py . am einfachsten ist es, eine leere Datei mit dem Namen __init__.py in demselben Verzeichnis, in dem sich Ihre.py-Datei befindet.

diese Beitrag von Mike Grouchy ist eine großartige Erklärung der __init__.py und seine Verwendung zum Erstellen, Importieren und Einrichten von Python-Paketen.

7voto

Suguru Naresh Punkte 131
import sys
#print(sys.path)
sys.path.append('../input/tokenization')
import tokenization

Um eine beliebige .py-Datei zu importieren, können Sie den obigen Code verwenden.

Fügen Sie zunächst den Pfad an und importieren Sie dann

Hinweis: Das Verzeichnis '../input/tokenization' enthält die Datei tokenization.py

5voto

Luke359 Punkte 439

Ich importiere die Datei und verwende eine Abkürzung für ihren Namen.

import DoStuff.py as DS
DS.main()

Vergessen Sie nicht dass Ihre importierte Datei MUSS SEIN mit der Erweiterung .py benannt

4voto

Marek Vajda Punkte 21

Dies half mir, mein Python-Projekt mit Visual Studio-Code .

Das Problem kann entstehen, wenn Sie nicht angeben, dass __init__.py innerhalb des Verzeichnisses. Und das Verzeichnis wird implicit namespace package . Hier ist eine schöne Zusammenfassung über Python-Importe und Projektstruktur .

Auch wenn Sie die Schaltfläche Visual Studio Code ausführen verwenden möchten run button in der oberen Leiste mit einem Skript, das sich nicht im Hauptpaket befindet, können Sie versuchen, die Konsole aus dem aktuellen Verzeichnis auszuführen.

Sie wollen zum Beispiel eine geöffnete test_game_item.py aus dem Tests-Paket und Sie haben Visual Studio Code geöffnet in omission (Hauptpaket)-Verzeichnis:

 omission
    app.py
    common
       classproperty.py
       constants.py
       game_enums.py
       __init__.py
    game
       content_loader.py
       game_item.py
       game_round.py
       __init__.py
       timer.py
    __init__.py
    __main__.py
    resources
    tests
        __init__.py
        test_game_item.py
        test_game_round_settings.py
        test_scoreboard.py
        test_settings.py
        test_test.py
        test_timer.py
 pylintrc
 README.md
 .gitignore

Die Verzeichnisstruktur ist von [ 2 ].

Sie können versuchen, dies einzustellen:

(Windows) Ctrl + Shift + P Vorlieben: Einstellungen öffnen (JSON) .

Fügen Sie diese Zeile zu Ihrem Benutzereinstellungen :

"python.terminal.executeInFileDir": true

Eine umfassendere Antwort auch für andere Systeme findet sich in diese Frage .

4voto

rishi jain Punkte 1258

Es gibt mehrere Möglichkeiten, Ihr Python-Skript mit dem Namen abc.py einzubinden

  1. z.B. wenn Ihre Datei abc.py heißt (import abc) Die Einschränkung ist, dass Ihre Datei am gleichen Ort wie Ihr aufrufendes Python-Skript vorhanden sein sollte.

importieren abc

  1. z.B. wenn sich Ihre Python-Datei im Windows-Ordner befindet. Der Windows-Ordner befindet sich an demselben Ort, an dem sich auch das aufrufende Python-Skript befindet.

from folder import abc

  1. Falls das Skript abc.py im Ordner internal_folder verfügbar ist, der sich im Ordner

from folder.internal_folder import abc

  1. Wie von James oben beantwortet, sollte sich Ihre Datei an einem festen Ort befinden

importieren os
System einführen
scriptpath = "../Test/MyModule.py"
sys.path.append(os.path.abspath(scriptpath))
importieren MyModule

Für den Fall, dass Ihr Python-Skript aktualisiert wird und Sie es nicht hochladen möchten, verwenden Sie diese Anweisungen zur automatischen Aktualisierung. Bonus :)

%load_ext autoreload 
%autoreload 2

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