Race condition when generating .pyc files

Terry Reedy tjreedy at udel.edu
Tue Oct 7 14:16:24 EDT 2008


yogamatt1970 at gmail.com wrote:
>> If you package your apps using setup, pyc should be automatically
>> generated. Don't know if it can apply to your problem. But surely I'd go
>> this way (ie : automating pyc creation one way or another).
> 
> Yeah, I don't package up my code, it's all integrated into my build
> system,
> not an actual deliverable.

Can you integrate compileall into the build process (probably used by 
setup)?

 >>> import compileall
 >>> help(compileall)
Help on module compileall:

NAME
     compileall - Module/script to "compile" all .py files to .pyc (or 
.pyo) file.

FILE
     c:\programs\python30\lib\compileall.py

DESCRIPTION
     When called as a script with arguments, this compiles the directories
     given as arguments recursively; the -l option prevents it from
     recursing into directories.

     Without arguments, if compiles all modules on sys.path, without
     recursing into subdirectories.  (Even though it should do so for
     packages -- for now, you'll have to deal with packages separately.)

     See module py_compile for details of the actual byte-compilation.

FUNCTIONS
     compile_dir(dir, maxlevels=10, ddir=None, force=0, rx=None, quiet=0)
         Byte-compile all modules in the given directory tree.

         Arguments (only dir is required):

         dir:       the directory to byte-compile
         maxlevels: maximum recursion level (default 10)
         ddir:      if given, purported directory name (this is the
                    directory name that will show up in error messages)
         force:     if 1, force compilation, even if timestamps are 
up-to-date
         quiet:     if 1, be quiet during compilation

     compile_path(skip_curdir=1, maxlevels=0, force=0, quiet=0)
         Byte-compile all module on sys.path.

         Arguments (all optional):

         skip_curdir: if true, skip current directory (default true)
         maxlevels:   max recursion level (default 0)
         force: as for compile_dir() (default 0)
         quiet: as for compile_dir() (default 0)

DATA
     __all__ = ['compile_dir', 'compile_path']




More information about the Python-list mailing list