Maison >développement back-end >Tutoriel Python >Comment regrouper correctement les fichiers de données avec l'option --onefile de PyInstaller ?
Regroupement de données PyInstaller avec --onefile : résolution des ressources manquantes
En cours de création d'un exécutable compact (EXE) avec PyInstaller à l'aide du Avec l'indicateur « --onefile », les utilisateurs rencontrent souvent des difficultés pour regrouper des fichiers de données supplémentaires tels que des images ou des icônes. Ce problème survient lorsque l'EXE compilé ne parvient pas à localiser les ressources référencées.
Une solution particulière, proposée par Shish, impliquait de définir une variable d'environnement avant la méthode d'exécution dans le script :
import os os.environ["IMAGE_PATH"] = os.path.join(os.path.dirname(os.path.abspath(__file__)), "images")
Cette approche peut cependant ne pas fonctionner avec les versions plus récentes de PyInstaller. Au lieu de cela, une solution alternative consiste à utiliser la variable sys._MEIPASS, qui fournit le chemin d'accès au répertoire temporaire créé par PyInstaller pendant l'exécution :
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)
En définissant une fonction personnalisée comme celle-ci, vous pouvez récupérer dynamiquement le chemin absolu vers vos fichiers de données, que vous exécutiez le script en mode développement ou en tant qu'EXE compilé. N'oubliez pas de spécifier le chemin relatif vers votre ressource dans le paramètre relative_path.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!