Thanks to Vajrasky Kok (who has been submitting a lot of patches, which is great), we’ve fixed an inconsistency in the way the command line interface of the compileall module works. You can pre-generate .pyc files by doing something like:
>>> python -m compileall file1.py dir1 dir2 file3.py
You can also do:
>>> python -m compileall
and it will compile all the python files in directories on the python path (sys.path).
Compileall also takes some options, such as -f to force re-compilation even if it looks like the .pyc file is up to date, and -q to make the compilation process produce minimal output.
The problem was that if you didn’t specify any file or directory names, compileall would ignore the -f and -q options. It’s been that way for a long time, and nobody complained...until someone finally did.
So, that will be fixed in the next release of 3.3 and 3.4. We didn’t fix it in 2.7, however, because we don’t have tests for the compileall CLI in 2.7, and the code is different. (The reason we have tests in 3.3 is that we rewrote the CLI to use argparse in 3.3, thus the difference in the code.)
I think this little Bug of the Day experiment is going to take a pause. I’d like to spend my Python time for the next while making sure that the What’s New document for 3.4 isn’t missing any new features that have been added...and we know a bunch have slipped through the cracks.