[Python-Dev] #12982: Should -O be required to *read* .pyo files?

Terry Reedy tjreedy at udel.edu
Tue Jun 12 20:16:04 CEST 2012


http://bugs.python.org/issue12982

Currently, cpython requires the -O flag to *read* .pyo files as well as 
the write them. This is a nuisance to people who receive them from 
others, without the source. The originator of the issue quotes the 
following from the doc (without giving the location).

"It is possible to have a file called spam.pyc (or spam.pyo when -O is 
used) without a file spam.py for the same module. This can be used to 
distribute a library of Python code in a form that is moderately hard to 
reverse engineer."

There is no warning that .pyo files are viral, in a sense. The user has 
to use -O, which is a) a nuisance to remember if he has multiple scripts 
and some need it and some not, and b) makes his own .py files used with 
.pyo imports cached as .pyo, without docstrings, like it or not.

Currently, the easiest workaround is to rename .pyo to .pyc and all 
seems to work fine, even with a mixture of true .pyc and renamed .pyo 
files. (The same is true with the -O flag and no renaming.) This 
suggests that there is no current reason for the restriction in that the 
*execution* of bytecode is not affected by the -O flag. (Another 
workaround might be a custom importer -- but this is not trivial, 
apparently.)

So is the import restriction either an accident or obsolete holdover? If 
so, can removing it be treated as a bugfix and put into current 
releases, or should it be treated as an enhancement only for a future 
release?

Or is the restriction an intentional reservation of the possibility of 
making *execution* depend on the flag? Which would mean that the 
restriction should be kept and only the doc changed?

-- 
Terry Jan Reedy



More information about the Python-Dev mailing list