[Numpy-discussion] Function numpy.get_include() has a side effet

Nicolas Grilly nicolas.grilly at garden-paris.com
Fri Feb 9 22:11:45 EST 2007


Hello,

I have a package with a distutils script. This script calls
numpy.get_include(), in order to get numpy's header files location.
But the function seems to have a side effect by silently patching
distutils. Some classes and functions of standard library distutils
are replaced by numpy's ones.

For example, before calling numpy.get_include(), the function
new_compiler comes from standard library:

>>> from distutils.ccompiler import new_compiler
>>> new_compiler.__module__
'distutils.ccompiler'

But after calling numpy.get_include(), the function comes from numpy:

>>> import numpy
>>> numpy.get_include()
>>> from distutils.ccompiler import new_compiler
>>> new_compiler.__module__
'numpy.distutils.ccompiler'

This is because the code of numpy.get_include() imports
numpy.distutils, and this triggers the patching mechanism.

This is a problem because the behavior of distutils is different
before and after the call to numpy.get_include(), and it breaks my
distutils script.

Is it possible to remove this side effect?

Thanks,

Nicolas Grilly



More information about the NumPy-Discussion mailing list