On Fri, 15 Apr 2005, M.-A. Lemburg wrote:
Check the Makefile you Python version has installed in lib/pythonX.X/config/Makefile
There is no /usr/lib/python2.3/config/Makefile. It is installed in /usr/lib64/python2.3/config/Makefile. That file contains # Expanded directories BINDIR= $(exec_prefix)/bin LIBDIR= $(exec_prefix)/lib64 MANDIR= /usr/share/man INCLUDEDIR= /usr/include CONFINCLUDEDIR= $(exec_prefix)/include SCRIPTDIR= $(prefix)/lib64 # Detailed destination directories BINLIBDEST= $(LIBDIR)/python$(VERSION) LIBDEST= $(SCRIPTDIR)/python$(VERSION) INCLUDEPY= $(INCLUDEDIR)/python$(VERSION) CONFINCLUDEPY= $(CONFINCLUDEDIR)/python$(VERSION) LIBP= $(LIBDIR)/python$(VERSION) So it looks like distutils is looking in the wrong place. If you look in sysconfig.py: def get_python_lib(plat_specific=0, standard_lib=0, prefix=None): """Return the directory containing the Python library (standard or site additions). If 'plat_specific' is true, return the directory containing platform-specific modules, i.e. any module from a non-pure-Python module distribution; otherwise, return the platform-shared library directory. If 'standard_lib' is true, return the directory containing standard Python library modules; otherwise, return the directory for site-specific modules. If 'prefix' is supplied, use it instead of sys.prefix or sys.exec_prefix -- i.e., ignore 'plat_specific'. """ if prefix is None: prefix = plat_specific and EXEC_PREFIX or PREFIX if os.name == "posix": libpython = os.path.join(prefix, "lib", "python" + get_python_version()) if standard_lib: return libpython else: return os.path.join(libpython, "site-packages") elif os.name == "nt": if standard_lib: return os.path.join(prefix, "Lib") else: if get_python_version() < "2.2": return prefix else: return os.path.join(PREFIX, "Lib", "site-packages") elif os.name == "mac": if plat_specific: if standard_lib: return os.path.join(prefix, "Lib", "lib-dynload") else: return os.path.join(prefix, "Lib", "site-packages") else: if standard_lib: return os.path.join(prefix, "Lib") else: return os.path.join(prefix, "Lib", "site-packages") elif os.name == "os2": if standard_lib: return os.path.join(PREFIX, "Lib") else: return os.path.join(PREFIX, "Lib", "site-packages") else: raise DistutilsPlatformError( "I don't know where Python installs its library " "on platform '%s'" % os.name) Under the posix section, distutils assumes that Python is installed in /usr/lib/python-X.X, where it's really in /usr/lib64/python-X.X. This is clearly a distutils bug. Distutils should be looking under lib64 for 64-bit x86 systems. All linux x86-64 distributions use lib64 instead of lib for 64 bit libraries. It looks like this code needs to be cleverer. Jeremy -- Jeremy Sanders <jeremy@jeremysanders.net> http://www.jeremysanders.net/ Cambridge, UK Public Key Server PGP Key ID: E1AAE053