When I was testing PyInstaller with #3932, I noticed that DLLs are duplicated. My file is just a test game loop, and I built by doing pyinstaller test_basic.py.
dist/test_basic/_internal contains SDL2.dll
But so does dist/test_basic/_internal/pygame!
It's not perfect duplication though, sometimes the top level has stuff the bottom level does not. For example, libwavpack is a the top level but not inside the pygame package. This is likely because it's an SDL_mixer "extra" so there's no explicit link at the binary level, SDL_mixer just loads it opportunistically if its there.
Note as well that our PyInstaller behavior comes from the src_py\__pyinstaller\hook-pygame.py file, which is doing stuff with binaries.
When I was testing PyInstaller with #3932, I noticed that DLLs are duplicated. My file is just a test game loop, and I built by doing
pyinstaller test_basic.py.dist/test_basic/_internalcontains SDL2.dllBut so does
dist/test_basic/_internal/pygame!It's not perfect duplication though, sometimes the top level has stuff the bottom level does not. For example, libwavpack is a the top level but not inside the pygame package. This is likely because it's an SDL_mixer "extra" so there's no explicit link at the binary level, SDL_mixer just loads it opportunistically if its there.
Note as well that our PyInstaller behavior comes from the
src_py\__pyinstaller\hook-pygame.pyfile, which is doing stuff with binaries.