Heim >Backend-Entwicklung >Python-Tutorial >Wie bündele ich Datendateien korrekt mit der Option --onefile von PyInstaller?
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!