3 votes

PyInstaller --add-data de script

J'essaie de créer un fichier exécutable à partir de mon projet python. J'utilise la fonction 'make_executable' pour construire un fichier exécutable.

L'exécution de la commande d'ajout de données génère une erreur du type : pyinstaller : error : unrecognized arguments : --add-data C:\Users <>... --add-data : C:\Users <>...

def make_executable(main_script: str, files_to_add: List[str], target_location: str = None,
name: str = 'app', single_file: bool = True) -> None:
    """
    Creating an executable file out of the provided parameters.
    :param main_script: Main script of the application.
    :param files_to_add: A list of files that are crucial to the project.
    :param target_location: Where to store the executable file.
    :param name: Name of the executable file.
    :param single_file: Determine whether a single file or a directory is to be created. 
    :return: None.
   """
   args = [main_script, f'--name {name}']
        if target_location is not None:
            args.append(f'--distpath {target_location}')
        if single_file:
            args.append('--onefile')
        for file in files_to_add:
            args.append(f'--add-data {file}')
        PyInstaller.__main__.run(args)

J'ai également essayé d'utiliser quelque chose comme

  • --add-data C:\Users <> \xyz ;. --add-data C:\Users <> \abc ;.
  • --add-data " C:\Users <> \xyz ;." --add-data " C:\Users <> \abc ;."

Note : Chaque barre oblique inverse est échappée.

Que puis-je faire pour ajouter les données requises ? Toute aide sur ce sujet est la bienvenue !

1voto

alexpdev Points 198

Selon la PyInstaller docs :

--add-data <SRC;DEST ou SRC:DEST>
Fichiers ou dossiers non binaires supplémentaires à ajouter à l'exécutable. Le séparateur de chemin est spécifique à la plate-forme, os.pathsep (qui est ; sous Windows et : sur la plupart des systèmes unix) est utilisé. Cette option peut être utilisée plusieurs fois.

Vous devez également séparer les drapeaux et les arguments à l'intérieur de la liste. comme ceci :

if target_location is not None:
    args.append("--dispath")
    args.append(target_location)
if single_file:
    args.append('--onefile')
for file in files_to_add:
    args.append("--add-data")
    args.append(f'{file};{some destination}')

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X