Heim >Backend-Entwicklung >Python-Tutorial >Absolute vs. relative Pfade in Flask Blueprints: Wie referenziere ich Verzeichnisse richtig?

Absolute vs. relative Pfade in Flask Blueprints: Wie referenziere ich Verzeichnisse richtig?

Susan Sarandon
Susan SarandonOriginal
2024-12-26 17:41:14419Durchsuche

Absolute vs. Relative Paths in Flask Blueprints: How to Correctly Reference Directories?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn