Ist das dumm (Programmieren)?

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Du hast Probleme identifiziert und Lösungen gefunden. Programme erst für die Kommandozeile zu bauen, und später ein GUI zu entwickeln und über andere Plattformen nachzudenken, ist üblich, sowie auch das Einbinden von Ressourcen. Die Ansätze sind natürlich nicht die einzige oder endgültige Lösung, aber wunderbar um erste Erfahrungen zu sammeln, sowie generell sicher und nicht unüblich. Lass dich da nicht verunsichern.

Alles also absolut korrekt und ich denke, du hast viel gelernt. Mach so weiter! Scheue dich nicht, interessante Technologien auszuprobieren und dich breitzumachen.

Wenn ich etwas aus deinem Text nicht aufgegriffen habe, stell gerne eine Nachfrage.

Schau in die Dokumentation von PyInstaller. Du kannst Dateien mit der --add-data-Option zum Buildpaket hinzufügen:

pyinstaller --onefile --add-data "your_picture.jpg:." your_script.py

oder du listest alle Dateien innerhalb der .spec-Datei auf.

Zur Laufzeit der Anwendung werden die Bilder in ein temporäres Verzeichnis gepackt. Du kannst dir mit einer Funktion den korrekten Pfad holen:

import os

def get_image_path(relative_file_path):
  if hasattr(sys, "_MEIPASS"):
    return os.path.join(sys._MEIPASS, relative_file_path)

  return relative_file_path

Deine Base64-Lösung ist eher ein Workaround, bei dem man auch schauen sollte, inwiefern der String die Speichergröße (und vielleicht auch Ladezeit) deiner tatsächlichen Anwendung beeinflusst.