Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich Datendateien mit der Option --onefile von PyInstaller ordnungsgemäß bündeln?

Wie kann ich Datendateien mit der Option --onefile von PyInstaller ordnungsgemäß bündeln?

Susan Sarandon
Susan SarandonOriginal
2024-12-18 13:38:10965Durchsuche

How Can I Properly Bundle Data Files with PyInstaller's --onefile Option?

Bündelung von Datendateien mit PyInstaller (--onefile): Beheben von Dateiverweisproblemen

Beim Versuch, eine ausführbare Datei mit PyInstaller mithilfe des - zu bündeln -onefile-Option kann sich das Einbinden zusätzlicher Dateien wie Bilder und Symbole als schwierig erweisen. Das Problem ist darauf zurückzuführen, dass die kompilierte ausführbare Datei diese referenzierten Dateien nicht finden kann.

Eine mögliche Lösung besteht darin, die Umgebungsvariable für den Pfad der ausführbaren Datei festzulegen. In früheren PyInstaller-Versionen wurde dies mithilfe der Shish-Methode erreicht. Allerdings haben aktuelle Updates von PyInstaller diesen Ansatz überflüssig gemacht.

Um dieses Problem zu beheben, wird der Pfad zur ausführbaren Datei jetzt in sys._MEIPASS gespeichert. Der folgende Code zeigt, wie auf diesen Pfad zugegriffen wird:

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 Verwendung dieses modifizierten Ansatzes wird Ihre kompilierte ausführbare Datei die erforderlichen Datendateien erfolgreich finden und nutzen und so eine nahtlose Funktionalität gewährleisten.

Das obige ist der detaillierte Inhalt vonWie kann ich Datendateien mit der Option --onefile von PyInstaller ordnungsgemäß bündeln?. 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