Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

PyInstaller –add-data from script

I’m trying to create an executable file out of my python project.
I’m using the function ‘make_executable’ to build an executable file.

Running the command to add data raises an error like:
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)

I’ve also tried using something like

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

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

Note: Each backslash is escaped.

What can I do to add the required data?
Any help on this issue is appreciated!

>Solution :

Per the PyInstaller docs:

–add-data <SRC;DEST or SRC:DEST>
Additional non-binary files or folders to be added to the executable. The path separator is platform specific, os.pathsep (which is ; on Windows and : on most unix systems) is used. This option can be used multiple times.

So the your add-data line should look like this:

Also you need to split up the flags and the arguments inside the list.
like this:

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}')
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading