[Distutils] pythonv, take two

Vinay Sajip vinay_sajip at yahoo.co.uk
Fri Mar 18 01:03:06 CET 2011


Carl Meyer <carl <at> oddbird.net> writes:

> This is odd, as the same setup works fine for me with a copied binary
> (I'm on Ubuntu 10.10). If you're willing to do any more debugging on
> this, here's what would be helpful:

I think I know what the problem is: the python executable checks to see where it
was run from. If it looks as if it was run from a source build, it looks for
site.py in the Lib folder relative to the executable; otherwise it looks for
site.py in sys.prefix/lib/pythonX.Y. I've copied ~/tools/cpythonv/python to
~/projects/vptest/bin, and here's what happens:

vinay at eta-natty:~/projects/vptest/bin$ ~/tools/cpythonv/python
Python 3.3a0 (pythonv2:e56f05883ceb, Mar 17 2011, 09:07:29) 
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys; sys.prefix
'/usr/local'
>>> sys.path
['', '/usr/local/lib/python33.zip', '/home/vinay/tools/cpythonv/Lib',
'/home/vinay/tools/cpythonv/Lib/plat-linux2',
'/home/vinay/tools/cpythonv/build/lib.linux-i686-3.3',
'/usr/local/lib/python3.3/site-packages']
>>> 
vinay at eta-natty:~/projects/vptest/bin$ ./python
Python 3.3a0 (pythonv2:e56f05883ceb, Mar 17 2011, 09:07:29) 
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys; sys.prefix
'/usr/local'
>>> sys.path
['', '/usr/local/lib/python33.zip', '/usr/local/lib/python3.3',
'/usr/local/lib/python3.3/plat-linux2', '/usr/local/lib/python3.3/lib-dynload',
'/usr/local/lib/python3.3/site-packages']
>>> 

Notice how the sys.prefix is the same in both cases, but the path is different.
Your site.py is never run with the copy, because it gets the site.py from
/usr/local/lib/python3.3:

vinay at eta-natty:~/projects/vptest/bin$ ~/tools/cpythonv/python
Python 3.3a0 (pythonv2:e56f05883ceb, Mar 17 2011, 09:07:29) 
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import site; site.__file__
'/home/vinay/tools/cpythonv/Lib/site.py'
>>> 
vinay at eta-natty:~/projects/vptest/bin$ ./python
Python 3.3a0 (pythonv2:e56f05883ceb, Mar 17 2011, 09:07:29) 
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import site; site.__file__
'/usr/local/lib/python3.3/site.py'
>>> 

I suppose this won't be a problem when the actual Python 3.3 is installed - the
virtualizing site.py will be in /usr/lib/python3.3 or /usr/local/lib/python3.3.
On this system I have a local build of Python made from the official default
branch, which is installed to /usr/local/lib since the system Python is 3.2
(Ubuntu 11.04 - Natty).

Regards,

Vinay Sajip




More information about the Distutils-SIG mailing list