[Numpy-discussion] Is there a known problem compiling numpy with VC7? Success

Tim Hochberg tim.hochberg at cox.net
Thu Feb 9 17:07:21 CST 2006

Tim Hochberg wrote:

> Pearu Peterson wrote:
>> On Thu, 9 Feb 2006, Tim Hochberg wrote:
>>> I had this fantasy that default_lib_dirs would get picked up 
>>> automagically; however that does not happen. I still ended up putting:
>>>           from  numpy.distutils import system_info
>>>           library_dirs = system_info.default_lib_dirs
>>>           result = 
>>> config_cmd.try_run(tc,include_dirs=[python_include], 
>>> library_dirs=library_dirs)
>>> into setup.py. Is that acceptable? It's not very elegant.
>> No, don't use system_info.default_lib_dirs.
>> Use distutils.sysconfig.get_python_lib() to get the directory that 
>> contains Python library.
> That's the wrong library. Get_python_lib gives you the location of the 
> python standard library, not the location of python24.lib. The former 
> being python24/Lib (or python24/Lib/site-packages depending what 
> options you feed get_python_lib) 'and the latter being python24/libs 
> on my box.

To follow up on this a little bit, I investigated how distutils itself 
finds python24.lib. It turns out that it is in build_ext.py, near line 
168. The relevant code is:

        # also Python's library directory must be appended to library_dirs
        if os.name == 'nt':
            self.library_dirs.append(os.path.join(sys.exec_prefix, 'libs'))

Unfortunately, there's no obvious, clean way to extract the library 
information from there. You can grab it using the following magic formula:

            from distutils.core import Distribution
            from distutils.command import build_ext
            be = build_ext.build_ext(Distribution())
            librarys_dirs = be.library_dirs

However, that seems worse than what we're doing now. I haven't actually 
tried this in the code either -- for all I know instantiating an extra 
Distribution may have some horrible side effect that I don't know about. 
If someone can come up with a cleaner way to get to this info, that'd be 
great, otherwise I'd say we might as well just keep things as they are 
for the time being.



More information about the Numpy-discussion mailing list