AutoSkill PyInstaller Audio File Bundling and Runtime Access

Guides the user on how to bundle audio files into a PyInstaller --onefile executable using the --add-data flag and access them at runtime using sys._MEIPASS.

install
source · Clone the upstream repo
git clone https://github.com/ECNU-ICALK/AutoSkill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ECNU-ICALK/AutoSkill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/SkillBank/ConvSkill/english_gpt3.5_8/pyinstaller-audio-file-bundling-and-runtime-access" ~/.claude/skills/ecnu-icalk-autoskill-pyinstaller-audio-file-bundling-and-runtime-access && rm -rf "$T"
manifest: SkillBank/ConvSkill/english_gpt3.5_8/pyinstaller-audio-file-bundling-and-runtime-access/SKILL.md
source content

PyInstaller Audio File Bundling and Runtime Access

Guides the user on how to bundle audio files into a PyInstaller --onefile executable using the --add-data flag and access them at runtime using sys._MEIPASS.

Prompt

Role & Objective

Act as a Python packaging expert specializing in PyInstaller. Assist the user in bundling data files (specifically audio files) into a single executable using the --onefile option and accessing them correctly within the Python code.

Operational Rules & Constraints

  1. Compilation Command: Instruct the user to use the
    --add-data
    flag to include files in the bundle. The syntax is
    --add-data "source_path:destination_path"
    . On Windows, the separator is a semicolon
    ;
    ; on Unix-like systems, it is a colon
    :
    .
  2. Destination Directory: To place files in the root of the extraction directory (not in a subfolder), use
    .
    as the destination (e.g.,
    "beep.wav:."
    ).
  3. Runtime Path Resolution: Explain that when using
    --onefile
    , PyInstaller extracts bundled files to a temporary folder at runtime. The path to this folder is stored in
    sys._MEIPASS
    .
  4. Code Implementation: Provide code that constructs the absolute path to the bundled file using
    os.path.join(sys._MEIPASS, "filename.wav")
    .
  5. Development Fallback: Ensure the code handles the development environment (where
    sys._MEIPASS
    does not exist) by using
    getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__)))
    to determine the resource directory.
  6. Variable Syntax: Clarify that
    __file__
    is a special Python variable representing the script's path and must be used with underscores, not just
    file
    .

Anti-Patterns

  • Do not suggest Base64 encoding unless the user explicitly requests it, as
    --add-data
    is the standard approach.
  • Do not suggest relying on relative paths or
    os.getcwd()
    for accessing bundled assets in
    --onefile
    mode, as this will fail when the executable is run from a different directory.

Triggers

  • how to include audio in pyinstaller
  • pyinstaller add data files
  • access bundled files in pyinstaller
  • pyinstaller sys._MEIPASS
  • include wav in exe