Ian Bicking wrote:
On Sun, Feb 21, 2010 at 12:32 PM, Larry Hastings <larry@hastings.org> wrote:
* Override sys.prefix: allow you to put the binary in someplace other than, say, ~/env/bin/python and still support an environment in ~/env/.  Also the use case of looking for libraries in a location based on the interpreter name (not the containing directory), like supporting /usr/bin/python2.7 and /usr/bin/python2.7-dbg.

I'm new to this: why would you want to change sys.prefix in the first place?  Its documentation implies that it's where Python itself is installed.  I see two uses in the standard library (trace and gettext) and they both look like they'd get confused if sys.prefix pointed at a virtualized directory.

* Control global site-packages: people use this all the time with virtualenv.
* Other locations: well, since Ubuntu/Debian are using dist-packages and whatnot, to get *full* isolation you might want to avoid this.  This is really handy when testing setup instructions.
* Control installations: right now distutils only really looks in /usr/lib/pythonX.Y/distutils/distutils.cfg for settings.  virtualenv monkeypatches distutils to look in <sys.prefix>/lib/pythonX.Y/distutils/distutils.cfg in addition, and several people use this feature to control virtualenv-local installation.

Okey-doke, I defer to your experience.

Obviously if this is going into Python we can do better than monkeypatching distutils.

  * pythonv's purpose in life is to infer your prefix directory and
    run "pythonX.X --prefix <prefixdir> [ all args it got ... ]".

I don't see any reason to call the other Python binary, it might as well just act like it was changed.  sys.executable *must* point to the originally called interpreter anyway.

If by this you mean pythonv should load the Python shared library / DLL directly, that would make it impossible to stack environments.  Which I'm still angling for.


/larry/