Python 3.3 and .pyo files

Ramchandra Apte maniandram01 at gmail.com
Sat Sep 22 10:01:49 EDT 2012


On Saturday, 22 September 2012 18:51:01 UTC+5:30, Steven D'Aprano  wrote:
> On Fri, 21 Sep 2012 22:46:08 -0400, Terry Reedy wrote:
> 
> 
> 
> > On 9/21/2012 5:10 AM, Marco wrote:
> 
> >> I was trying to import a pyo module in Python 3.3, but Python does not
> 
> >> find it:
> 
> > 
> 
> > You appear to be trying to *run*, not *import* a .pyo module.
> 
> 
> 
> Marco is using the standard mechanism for finding, importing, and running 
> 
> a module. I don't believe his use of -m should be a problem. It works in 
> 
> 3.2, and it works with .pyc files in 3.3, I see nothing to suggest it 
> 
> shouldn't work with .pyo files in 3.3.
> 
> 
> 
> 
> 
> >> $ echo "print(__file__)" > foo.py
> 
> >> $ python3.3 -O -m foo
> 
> > 
> 
> > Since foo.py is in the current directory, I am not sure why you use '-m
> 
> > foo' instead of 'foo.py'. -m is for running a module somewhere on
> 
> > sys.path.
> 
> 
> 
> Yes, and the current directory is on sys.path.
> 
> 
> 
> I would be astonished if python -m could not find a module that happened 
> 
> to be in the current directory.
> 
> 
> 
> 
> 
> [...]
> 
> > Also, the
> 
> > -O is sort of redundant, or perhaps interfering, since its usual effect
> 
> > to to say 'get and put, from and to the cache, .pyo instead of .pyc'.
> 
> 
> 
> No it is not redundant. You link specifically to an bug tracker issue 
> 
> below where is is clearly decided that if you want to run a .pyo file you 
> 
> *must* use the -O switch. (I approve of this decision.)
> 
> 
> 
> 
> 
> >> /usr/local/bin/python3.3: No module named foo
> 
> >>
> 
> >> How come? Thanks in advance, Marco
> 
> > 
> 
> > You might read some of http://bugs.python.org/issue12982
> 
> > 
> 
> > in particular, from http://bugs.python.org/issue12982#msg162814
> 
> 
> 
> Whose words are these following?
> 
> 
> 
> 
> 
> > Python interpreters exist to run Python code. The existence,
> 
> > persistence, and other details of compilation caches are
> 
> > version-dependent implementation details. Being able to execute from
> 
> > such caches without source present is also an implementation detail, and
> 
> > for CPython, it gets secondary support at best. (This is a compromise
> 
> > between full support and no support.)"
> 
> 
> 
> I'm not sure if these are your words, or if you are quoting some random 
> 
> commenter on the pydev list, or one of the lead developers who might 
> 
> actually know what he is talking about.
It is Terry J. Reedy's words - see end of http://bugs.python.org/issue12982#msg162814 
 
 
> As I recall, some time in the recent past Guido came down *hard* against 
> 
> the suggestion that support for running sourceless files (.pyc and .pyo) 
> 
> should be dropped. Even if I'm misremembering, it is the case that the 
> 
> Python 3.3 will find and run a .pyc file, but not a .pyo file. There's a 
> 
> new candidate release of 3.3 due out over the next couple of days. If it 
> 
> shows the same behaviour, it should be reported as a bug.
> 
> 
> 
> 
> 
> 
> 
> -- 
> 
> Steven



More information about the Python-list mailing list