On Feb 27, 2010, at 9:38 AM, Nick Coghlan wrote:

> I do like the idea of pulling .pyc only imports out into a separate
> importer, but would go so far as to suggest keeping them as a command
> line option rather than as a separately distributed module.

One advantage of doing this as a separately distributed module is that it can 
have its own ecosystem and momentum.  Most projects that want this sort of 
bundling or packaging really want to be shipped with something like py2exe, and 
I think the folks who want such facilities would be better served by a nice 
project website for "python sealer" or "python bundler" rather than obscure 
directions for triggering the behavior via options or configuration.

Making bytecode loading a feature of interpreter startup, whether it's a config 
file, a command-line option or an environment variable, is not a great idea.  
For folks that want to ship a self-contained application, any of these would 
require an additional customization step, where they need to somehow tell their 
bundled interpreter to load bytecode.  For people trying to ship a 
self-contained and tamper-unfriendly (since even "tamper-resistant" would be 
overstating things) library to relatively non-technical programmers, it opens 
the door to a whole universe of confusion and FAQs about why the code didn't 
load.

However bytecode-only code loading is facilitated, it should be possible to 
bootstrap from a vanilla python interpreter running normally, as you may not 
know you need to load a bytecode-only package at startup.  In the stand-alone 
case there are already plenty of options, and in the library case, shipping a 
zip file should be fine, since the __init__.py of your package should be 
plain-text and also able to trigger the activation of the bytecode-only 
importer.

There are already so many ways to ship bytecode already, it doesn't seem too 
important to support in this one particular configuration (files in a 
directory, compiled by just importing them, in the same place as ".py" files).  
The real problem is providing a seamless transition path for *build* processes, 
not the Python code itself.  Do any of the folks who are currently using this 
feature have a good idea as to how your build and distribute scripts might 
easily be updated, perhaps by a 2to3 fixer?
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to