Heim >Backend-Entwicklung >Python-Tutorial >Wie bündele ich Datendateien korrekt mit der Option --onefile von PyInstaller?

Wie bündele ich Datendateien korrekt mit der Option --onefile von PyInstaller?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-15 18:17:16391Durchsuche

How to Bundle Data Files Correctly with PyInstaller's --onefile Option?

PyInstaller-Datenbündelung mit --onefile: Behebung fehlender Ressourcen

Beim Erstellen einer kompakten ausführbaren Datei (EXE) mit PyInstaller unter Verwendung von Mit dem Flag „--onefile“ stoßen Benutzer häufig auf Probleme beim Bündeln zusätzlicher Datendateien wie Bilder oder Symbole. Dieses Problem tritt auf, wenn die kompilierte EXE-Datei die referenzierten Ressourcen nicht finden kann.

Eine bestimmte Lösung, wie von Shish vorgeschlagen, bestand darin, eine Umgebungsvariable vor der Ausführungsmethode im Skript festzulegen:

import os
os.environ["IMAGE_PATH"] = os.path.join(os.path.dirname(os.path.abspath(__file__)), "images")

Dieser Ansatz funktioniert jedoch möglicherweise nicht mit neueren Versionen von PyInstaller. Stattdessen besteht eine alternative Lösung darin, die Variable sys._MEIPASS zu verwenden, die den Pfad zum temporären Verzeichnis bereitstellt, das PyInstaller während der Laufzeit erstellt:

def resource_path(relative_path):
    """ Get absolute path to resource, works for dev and for PyInstaller """
    try:
        # PyInstaller creates a temp folder and stores path in _MEIPASS
        base_path = sys._MEIPASS
    except Exception:
        base_path = os.path.abspath(".")

    return os.path.join(base_path, relative_path)

Durch die Definition einer benutzerdefinierten Funktion wie dieser können Sie die dynamisch abrufen absoluter Pfad zu Ihren Datendateien, unabhängig davon, ob Sie das Skript im Entwicklungsmodus oder als kompilierte EXE-Datei ausführen. Denken Sie daran, den relativen Pfad zu Ihrer Ressource im Parameter relative_path anzugeben.

Das obige ist der detaillierte Inhalt vonWie bündele ich Datendateien korrekt mit der Option --onefile von PyInstaller?. 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