[Distutils] virtual-python.py, sys.prefix, and Mac

Ian Bicking ianb at colorstudy.com
Sun Sep 16 21:44:52 CEST 2007

Ronald Oussoren wrote:
> On 15 Sep, 2007, at 18:09, Ian Bicking wrote:
>> Hi all.  I'm kind of giving up on workingenv, and have started working
>> from virtual-python as a basis instead
>> (http://pypi.python.org/pypi/virtualenv/).
>> So the basic technique here is to copy the executable into
>> /ENV/bin/python, and then sys.prefix will be '/ENV'.  The standard
>> Python installed on a Mac doesn't seem to do this -- the prefix remains
>> '/opt/local/Library/Frameworks/Python.framework/Versions/2.4'
>> regardless.  (Custom built Python's on Mac work like normal.)
> All framework builds behave as you describe, Modules/getpath.c 
> special-cases calculation of sys.prefix for framework builds of Python 
> (the prefix is inside the framework regardless of where the executable is).

Is there any way to effect that calculation?  I.e., in a normal build 
that calculation is based on the location of the executable, so 
virtualenv moves the executable to effect that.

>> Does anyone know a way to get the normal effect on this Mac Python?
> You could copy the framework into the virtual python environment and 
> rewrite linker commands in the python command-line executable to use 
> that version of the framework.

That sounds like the similar situation to the standard library on other 
posix systems, which I've avoided copying.  To do that, I put a text 
file in that points to the original stdlib location, and in site.py I 
add that in (I only copy the portions of the stdlib that are needed when 
site.py is loaded -- os, re, etc).  So the same thing should be possible 
with the framework, and that's not too much of a problem.

I don't have any idea how to figure out the linker commands to change 
the Python command-line executable...?  I don't even have the vocabulary 
to begin figuring that out, I'm afraid.  Can you give an example?

Ian Bicking : ianb at colorstudy.com : http://blog.ianbicking.org
             : Write code, do good : http://topp.openplans.org/careers

More information about the Distutils-SIG mailing list