Skip to content

PyInstaller collect_all fails on Windows: VERSION file collides with arcade.version submodule #2837

@benjamin-kirkbride

Description

@benjamin-kirkbride

Summary

When using PyInstaller's collect_all("arcade") on Windows, the build fails because arcade ships both a VERSION file and an arcade.version submodule. On case-insensitive filesystems (Windows), these collide during the COLLECT phase.

Error

ERROR: Pyinstaller needs to create a directory at 'dist\diana\_internal\arcade\VERSION', but there already exists a file at that path!

PyInstaller tries to bundle:

  1. arcade/VERSION (the data file)
  2. arcade/version/ (the arcade.version submodule directory)

On Windows, VERSION and version resolve to the same path, causing the conflict.

Reproduction

On Windows:

pip install arcade pyinstaller

Create a minimal spec or script that uses collect_all("arcade"):

from PyInstaller.utils.hooks import collect_all
d, b, h = collect_all("arcade")
# Use these in an Analysis/COLLECT - will fail at COLLECT stage

Workaround

Skip collect_all for arcade and manually include only the runtime resources:

shared_datas = [
    (".venv/Lib/site-packages/arcade/resources", "arcade/resources"),
]

PyInstaller's automatic import analysis handles arcade's Python modules fine without collect_all.

Suggested fix

Either:

  • Rename VERSION to something that doesn't collide (e.g., _version.txt, or inline the version string into arcade/__init__.py)
  • Or rename the arcade.version submodule (e.g., arcade._version)

This would make arcade compatible with collect_all on Windows, which is the standard PyInstaller mechanism for bundling packages with data files and hidden imports.

Environment

  • arcade: latest (installed via pip)
  • PyInstaller: latest
  • OS: Windows (GitHub Actions windows-latest)
  • Python: 3.14

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions