But first, I want to show a "before" image.
Let's say your Python program plays certain .WAV files during its execution. I happened to be using QSound from PyQt to play the audio. This worked out well enough for me. I had the .WAV files in their own "sounds\" folder. The problem though was when I used Py2exe to distribute my app. I was having to manually copy my .WAV files into the dist folder after each version update because Py2exe didn't know to bundle them. On the Py2exe site, I found this way of getting the copying done for me.
from distutils.core import setup import py2exe data_files = [ (r'sounds', [r'sounds\activated.wav', r'sounds\running_silent.wav', r'sounds\exceptional_failure.wav', r'sounds\exceptional_success.wav', r'sounds\marginal_failure.wav', r'sounds\marginal_success.wav', r'sounds\average_failure.wav', r'sounds\average_success.wav', r'sounds\skill_check.wav',]) ]
This is just a snip from the setup.py script I use that imports and runs Py2exe. First, a "sounds" folder is created in the "dist" folder. Then the .WAV files are copied to it from their "sounds\" folder. No more having to manually copy these files over each time.
So this was working out swimmingly until I thought I'd give glob a try.
from distutils.core import setup import py2exe import glob data_files = [ (r'sounds', glob.glob(r'sounds\*.wav')) ]
The glob module allows "*.*" copying of files. So that was pretty cool. I didn't have to remember filenames to include in my list.
But then yesterday, I had the great idea I was going to put my .WAV files into a Python script and import it. I would list the filenames in a special .QRC file and then convert it to a Python file. That way the audio files could not be found or tampered with after distributing. Well... The QSound module I was using wanted nothing to do that with. So I went to the Qt Google+ Community and asked if this was even do-able. I was told to use the Phonon module to play such audio files.
Done. Here is a video showing an "after" image.