Pyinstaller audio file bundling and runtime access
AutoSkill: Experience-Driven Lifelong Learning via Skill Self-Evolution
npx -y skills add ECNU-ICALK/AutoSkill --skill pyinstaller-audio-file-bundling-and-runtime-accessAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
What its author says it does
Copied from the file, not written here
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.
SKILL.md
2.6 KB, as published. Nobody here has run it
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
- Compilation Command: Instruct the user to use the
--add-dataflag 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:. - Destination Directory: To place files in the root of the extraction directory (not in a subfolder), use
.as the destination (e.g.,"beep.wav:."). - 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 insys._MEIPASS. - Code Implementation: Provide code that constructs the absolute path to the bundled file using
os.path.join(sys._MEIPASS, "filename.wav"). - Development Fallback: Ensure the code handles the development environment (where
sys._MEIPASSdoes not exist) by usinggetattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__)))to determine the resource directory. - Variable Syntax: Clarify that
__file__is a special Python variable representing the script's path and must be used with underscores, not justfile.
Anti-Patterns
- Do not suggest Base64 encoding unless the user explicitly requests it, as
--add-datais the standard approach. - Do not suggest relying on relative paths or
os.getcwd()for accessing bundled assets in--onefilemode, 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