[Distutils] generating pyc and pyo files

Greg Ward gward@cnri.reston.va.us
Mon, 29 Mar 1999 20:53:13 -0500

Quoth Andrew Dalke, on 28 March 1999:
> When should the .pyc and .pyo files be generated during the
> install process, in the "build" directory or the "install" one?

Sounds like everyone is in favour of compiling at build time: good.
Nobody mentioned my reason for favouring this, which is simple:
installation should consist of nothing more than copying files and
(possibly) changing modes and ownerships.  All files that will be
installed should be generated at build time.  This makes lots of things
easier, notably: installation itself; updating the mythical database of
installed files; and creating "built distributions" such as RPM.

Also, if you check the code, you'll note that I don't use the
'compileall' module, but rather explicitly follow the list of module to
build.  Being able to catch errors didn't occur to me, but it's one good
reason.  (And Andrew's patch probably won't make it into versions 1.4
through 1.5.1, which I would still like to support.)  I think I just did 
it that way because I don't like ceding control over which files are
processed to an external entity.  (You'll note that distutils supplies
it's own 'copy_tree()' function, for basically the same reason.)

Would anyone interested in error handling care to look into what happens
when 'compile' fails?  Doesn't look like I've done anything in
particular to handle it (see distutils/command/build_py.py, towards the
bottom of the 'run()' method) -- I probably blithely assumed that it
would raise an exception like most IO routines do.

Wow, a thread where everybody agrees... we must be on to to something.

Greg Ward - software developer                    gward@cnri.reston.va.us
Corporation for National Research Initiatives    
1895 Preston White Drive                      voice: +1-703-620-8990 x287
Reston, Virginia, USA  20191-5434               fax: +1-703-620-0913