Maison > développement back-end > Tutoriel Python > Comment regrouper correctement les fichiers de données avec l'option --onefile de PyInstaller ?

Comment regrouper correctement les fichiers de données avec l'option --onefile de PyInstaller ?

Mary-Kate Olsen
Libérer: 2024-12-15 18:17:16
original
389 Les gens l'ont consulté

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

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")
Copier après la connexion

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)
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal