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

Ronald Oussoren ronaldoussoren at mac.com
Sun Sep 16 21:49:23 CEST 2007

On 16 Sep, 2007, at 21:44, Ian Bicking wrote:

> 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.

Move the framework.

>>> 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?

macholib (which is on PyPI) can do that. I'm not aware of a command- 
line tool that can do the same thing.

> -- 
> 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