[Python-Dev] #12982: Should -O be required to read .pyo files? (original) (raw)

R. David Murray rdmurray at bitdance.com
Wed Jun 13 19:58:10 CEST 2012


On Wed, 13 Jun 2012 13:19:43 -0400, Brett Cannon <brett at python.org> wrote:

On Tue, Jun 12, 2012 at 2:16 PM, Terry Reedy <tjreedy at udel.edu> wrote:

> http://bugs.python.org/**issue12982 <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). [...] > So is the import restriction either an accident or obsolete holdover? Neither. .pyo files are actually different from .pyc files in terms of what bytecode they may emit. Currently -O causes all asserts to be left out of the bytecode and -OO leaves out all docstrings on top of what -O does. This makes a difference if you are trying to introspect at the interpreter prompt or are testing things in development and want those asserts to be triggered if needed. > 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? > The behaviour shouldn't change. There has been talk of doing even more aggressive optimizing under -O, which once again would cause an even larger deviation between a .pyo file and a .pyc file (e.g. allowing Python code to hook into the peephole optimizer or an entirely new AST optimizer). > 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? The docs should get updated to be more clear.

OK, but you didn't answer the question :). If I understand correctly, everything you said applies to writing the bytecode, not reading it.

So, is there any reason to not use the .pyo file (if that's all that is around) when -O is not specified?

The only technical reason I can see why -O should be required for a .pyo file to be used (if it is the only thing around) is if it won't run without the -O switch. Is there any expectation that that will ever be the case?

On the other hand, not wanting make any extra effort to support sourceless distributions could be a reason as well. But if that's the case we should be transparent about it.

--David



More information about the Python-Dev mailing list