[Python-Dev] __file__

Brett Cannon brett at python.org
Fri Feb 26 23:09:26 CET 2010


On Thu, Feb 25, 2010 at 16:13, Greg Ewing <greg.ewing at canterbury.ac.nz>wrote:

> Michael Foord wrote:
>
>  I thought we agreed at the language summit that if a .pyc was in the place
>> of the source file it *could* be imported from - making pyc only
>> distributions possible.
>>
>
> Ah, that's okay, then. Sorry about the panic!
>
>
Michael is right about what as discussed at the language summit, but Barry
means what he says; if you look at the PEP as it currently stands it does
not support bytecode-only modules.

Barry and I discussed how to implement the PEP at PyCon after the summit and
supporting bytecode-only modules quickly began to muck with the semantics
and made it harder to explain (i.e. what to set __file__ vs. __compiled__
based on what is or is not available and how to properly define get_paths
for loaders). But a benefit of no longer supporting bytecode-only modules by
default is it cuts back on possible stat calls which slows down Python's
startup time (a complaint I hear a lot). Performance issues become even more
acute if you try to come up with even a remotely proper way to have
backwards-compatible support in importlib for its ABCs w/o forcing caching
on all implementors of the ABCs.

As for having a dependency on a loader, I don't see how that is obscure;
it's just a dependency your package has that you handle at install-time.

And personally, I don't see what bytecode-only modules buy you. The
obfuscation argument is bunk as we all know. Bytecode contains so much data
that disassembling it gives you a very clear picture of what the original
code was like. I think it's almost a dis-service to support bytecode-only
files as it leads people who are misinformed or simply don't take the time
to understand what is contained in a .pyc file into a false sense of
security about their code not being easy to examine by someone else. The
only perk I can see is space-saving, but that's dangerous as that ties you
to a specific VM with a specific magic number (let alone that it leads to
people tying themselves to CPython and ignoring the other VMs that simply do
not support bytecode).

-Brett




> --
> Greg
>
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> http://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe:
> http://mail.python.org/mailman/options/python-dev/brett%40python.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20100226/a1ac67bf/attachment.html>


More information about the Python-Dev mailing list