Python 2.7 module path problems on OS X

Ned Deily nad at acm.org
Sun Sep 5 11:20:24 CEST 2010


In article 
<AANLkTi=zZGOmi5NhYZCa7X9RBWu==oQzrZr4S876K2Eg at mail.gmail.com>,
 Nicholas Cole <nicholas.cole at gmail.com> wrote:

> I have a horrible feeling that this is in some way related to the new
> user installation directory in 2.7,or some problem with the framework
> built, but I'm having great trouble with the module search path on
> 2.7.
> 
> I usually install modules to install_lib =
> ~/Library/Python/$py_version_short/site-packages

There are differences in defaults between different Python versions and 
instances of the same version as built by different providers.   The 
pattern above is the default location for site-packages for 
Apple-supplied Pythons in recent versions of OS X, in particular the 
default /usr/bin/python2.6 in OS X 10.6 and /usr/bin/python2.5 in 10.5.  

>> I assumed that this would continue to work on 2.7.
> 
> Unfortunately, it seems not to. The installation is fine, but sys.path
> only includes
> 
> '/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',
> '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
> '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
> '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
> '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-
> scriptpackages',
> '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
> '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old',
> '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload',
> '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
> '

OTOH, the Python instances installed by the python.org OS X installers 
(or ones built similarly) default to using the site-packages directory 
in the framework directory as shown in that last path.

> Whereas on 2.6 on my system the default is the more extensive:
> 
[...]
> 
> I'm sorry to ask such a trivial question on the list, but I'm used to
> python installations "Just working"!  Can anyone suggest a good fix?

I'm not sure why you think it is broken.  The Apple 2.6 and the 
python.org 2.7 have different site-package directories in different 
locations.  That is to be expected.  The Apple-supplied Python comes 
with some additional packages pre-installed, like setuptools, PyObjC, 
and wx.  But you would need to install new versions of these for 2.7 
anyway.

f you use "easy_install" (aka setuptools or Distribute), keep in mind 
that every instance of Python needs to have its own version.  So, for 
2.7, you should follow the installation instructions for either 
setuptools or Distribute and install a version for 2.7 using python2.7.  
Its easy_install command will be in the framework bin directory, 
/Library/Frameworks/Python.framework/Versions/2.7/bin, which is the 
default location for scripts to be installed.  You should ensure that 
that directory appears on your shell PATH before /usr/bin (where the 
Apple-supplied easy_install is); if you used the default settings for 
the python.org installer, it will have attempted to modify your shell 
startup files, like .bash_profile, to do that for you.  Then you can use 
that easy_install (also available as easy_install-2.7) to install 
whatever packages you need for 2.7.  Or you can use pip.  Or just 
manually installing using the package's setup.py script.  All of them 
use the Python instance's version of Distutils and it will do the right 
thing for each instance as long as you don't try to influence things by 
using non-default settings or setting Python-related environment 
variables, like PYTHONPATH.

-- 
 Ned Deily,
 nad at acm.org




More information about the Python-list mailing list