Referenzieren von Verzeichnissen in Flask: Absolute vs. relative Pfade
In Flask-Anwendungen beim Zugriff auf Verzeichnisse aus Ansichten, die sich in Blueprints außerhalb des Stammverzeichnisses befinden Verzeichnis muss der Pfad absolut sein. Dies liegt daran, dass relative Pfade relativ zum aktuellen Arbeitsverzeichnis interpretiert werden, nicht zum Verzeichnis, in dem sich der Code befindet.
Zur Veranschaulichung nehmen wir an, Sie haben eine Flask-App mit der folgenden Struktur:
project/ app/ __init__.py views.py blueprints/ __init__.py blueprint.py data/ nltk_data
In der Ansicht des Blueprints schlägt der folgende Code fehl:
nltk.data.path.append('../nltk_data/')
Der Pfad ist relativ zum Verzeichnis des Blueprints, aber nltk.data erwartet einen absoluten Pfad. Die richtige Art, den Pfad anzugeben, ist die Verwendung der absoluten Form:
nltk.data.path.append('/home/username/myapp/app/nltk_data/')
Alternativ können Sie das root_path-Attribut der App oder des Blueprints verwenden, um einen absoluten Pfad zu erstellen, etwa so:
resource_path = os.path.join(app.root_path, 'nltk_data')
Dies wird empfohlen, da es die Notwendigkeit vermeidet, Pfade fest zu codieren, wodurch Ihr Code portabler wird.
Beachten Sie, dass das Anhängen im Allgemeinen nicht erforderlich ist Das Verzeichnis wird bei jedem Aufruf einer Ansicht in nltk.data verschoben. Normalerweise können Sie den Datenpfad einmalig beim Erstellen der App einrichten. Konkrete Anweisungen dazu finden Sie in der Dokumentation von nltk.
Das obige ist der detaillierte Inhalt vonAbsolute vs. relative Pfade in Flask Blueprints: Wie referenziere ich Verzeichnisse richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!