Module im übergeordneten Verzeichnis importieren
In Python sucht das Importmodul nach sys.path. sys.path ist eine Liste, die wir ändern können es dynamisch.
Um ein Modul in ein bestimmtes Verzeichnis zu importieren, verwenden wir sys.path.insert(0,somedir), um den Suchpfad hinzuzufügen und dann zu importieren.
Wenn Sie in diesem Fall das Modul in das übergeordnete Verzeichnis importieren möchten, können Sie sys.path.insert(0,parentdir) verwenden.
Diese Methode zum Schreiben absoluter Pfade funktioniert jedoch nicht, wenn die Datei an einer anderen Stelle abgelegt wird.
Verwenden Sie also die dynamische Methode, um das Verzeichnis der oberen Ebene abzurufen.
import os,sys parentdir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.insert(0,parentdir)
Warum sys.path.insert(0,parentdir) anstelle von sys.path.append(parentdir) verwenden?
Weil Der Suchpfad wird durchlaufen. Wenn in anderen Pfaden ein Modul mit demselben Namen vorhanden ist, tritt ein Importfehler auf. Verwenden Sie sys.path.insert(0,parentdir), um sicherzustellen, dass dieser Pfad zuerst durchsucht wird.
Lösung des Problems des zirkulären Imports
In Python stoßen wir häufig auf das Problem des zirkulären Imports, also des zirkulären Imports.
Diese komische Situation kommt in der Realität oft vor
Bei der Installation einer drahtlosen Netzwerkkarte müssen Sie online gehen, um den Netzwerkkartentreiber herunterzuladen.
Bei der Installation der Komprimierungssoftware wird das Installationsprogramm der Komprimierungssoftware heruntergeladen Das Internet ist tatsächlich komprimiert.
Zirkuläre Abhängigkeit ähnelt dieser Situation.
Zum Beispiel ist
in models.py,
from server import db class User(db.Model): pass
ist in server.py,
from flask import Flask from flask.ext.sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db' db = SQLAlchemy(app) from models import User
Dadurch entsteht das Problem des zirkulären Imports.
Es gibt mehrere Möglichkeiten, das Problem des zirkulären Imports zu lösen.
1. Lazy Import
Schreiben Sie die Importanweisung in eine Methode oder Funktion, um ihren Geltungsbereich auf einen lokalen Bereich zu beschränken.
Der Nachteil dieser Methode besteht darin, dass es zu Leistungsproblemen kommt.
2. Wechseln Sie von xxx import yyy zu import xxx;xxx.yyy, um auf das Formular zuzugreifen.
3 Organisieren Sie den Code.
Das Problem des zirkulären Imports bedeutet häufig, dass ein Problem mit dem Layout des Codes vorliegt .
Konkurrierende Ressourcen können zusammengeführt oder getrennt werden.
Zum Zusammenführen schreiben Sie sie einfach alle in eine Datei.
Trennung bedeutet das Extrahieren der Ressourcen, die importiert werden müssen, in eine Datei eines Drittanbieters.
Kurz gesagt, es dreht die Schleife in eine Richtung.
Weitere Artikel zum Import in das übergeordnete Verzeichnismodul und zu zirkulären Importproblemen in Python finden Sie auf der chinesischen PHP-Website!