Heim >Backend-Entwicklung >Python-Tutorial >Wie bestimme ich den Anwendungspfad in von pyInstaller generierten Python-EXE-Dateien?

Wie bestimme ich den Anwendungspfad in von pyInstaller generierten Python-EXE-Dateien?

Linda Hamilton
Linda HamiltonOriginal
2024-11-12 13:45:02906Durchsuche

How to Determine Application Path in Python EXEs Generated by pyInstaller?

Bestimmen des Anwendungspfads in von pyInstaller generierten Python-EXE-Dateien

Beim Erstellen von Python-Anwendungen als EXE-Dateien mit pyInstaller ist es erforderlich, bestimmte Dateien relativ zu lokalisieren zum Pfad der Anwendung. Für Anwendungen, die Konfigurationsdateien neben der ausführbaren Datei erfordern, schlägt die herkömmliche Methode der Verwendung von sys.path[0] in EXE-Szenarien fehl.

Um dieses Problem zu beheben, wird ein zuverlässigerer Ansatz verwendet:

import os
import sys

config_name = 'myapp.cfg'

# Check if the application is a script or a frozen EXE
if getattr(sys, 'frozen', False):
    application_path = os.path.dirname(sys.executable)
elif __file__:
    application_path = os.path.dirname(__file__)

config_path = os.path.join(application_path, config_name)

Die Funktion getattr() wird verwendet, um zu bestimmen, ob das „eingefrorene“ Attribut in sys definiert ist, was auf einen EXE-Kontext hinweist. Wenn dies der Fall ist, wird der Anwendungspfad auf das Verzeichnis festgelegt, das die ausführbare EXE-Datei enthält. Andernfalls wird auf die Verwendung des __file__-Attributs des laufenden Python-Moduls zurückgegriffen.

Durch die Integration dieses Ansatzes können Anwendungen konsistent ihren aktuellen Pfad abrufen, unabhängig davon, ob sie als Skripte ausgeführt oder in pyInstaller-EXE-Dateien konvertiert werden. Dadurch wird sichergestellt, dass Konfigurationsdateien und andere zugehörige Ressourcen auch in EXE-Umgebungen immer zugänglich sind.

Das obige ist der detaillierte Inhalt vonWie bestimme ich den Anwendungspfad in von pyInstaller generierten Python-EXE-Dateien?. 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