numexpr: Numpy MKL errors during installation

I’m trying to build numexpr 2.6.9 from source using Python 3.7.4 and numpy 1.17.0, but I get the following error message during configuration:

mkl_info:
/Users/Adam/spack/opt/spack/darwin-mojave-x86_64/clang-10.0.1-apple/py-numpy-1.17.0-tt562t4vqgt2jc6j4gkk5rdj6mbakig2/lib/python3.7/site-packages/numpy/distutils/system_info.py:773: UserWarning: Specified path /Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/mkl/lib/intel64;/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/compiler/lib/intel64 is invalid.
  return self.get_paths(self.section, key)
/Users/Adam/spack/opt/spack/darwin-mojave-x86_64/clang-10.0.1-apple/py-numpy-1.17.0-tt562t4vqgt2jc6j4gkk5rdj6mbakig2/lib/python3.7/site-packages/numpy/distutils/system_info.py:782: UserWarning: Specified path /Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/mkl/include is invalid.
  return self.get_paths(self.section, key)
Traceback (most recent call last):
  File "setup.py", line 228, in <module>
    setup_package()
  File "setup.py", line 224, in setup_package
    setup(**metadata)
  File "/Users/Adam/spack/opt/spack/darwin-mojave-x86_64/clang-10.0.1-apple/py-numpy-1.17.0-tt562t4vqgt2jc6j4gkk5rdj6mbakig2/lib/python3.7/site-packages/numpy/distutils/core.py", line 137, in setup
    config = configuration()
  File "setup.py", line 122, in configuration
    mkl_config_data = config.get_info('mkl')
  File "/Users/Adam/spack/opt/spack/darwin-mojave-x86_64/clang-10.0.1-apple/py-numpy-1.17.0-tt562t4vqgt2jc6j4gkk5rdj6mbakig2/lib/python3.7/site-packages/numpy/distutils/misc_util.py", line 2069, in get_info
    dict_append(info_dict,**get_info(a))
  File "/Users/Adam/spack/opt/spack/darwin-mojave-x86_64/clang-10.0.1-apple/py-numpy-1.17.0-tt562t4vqgt2jc6j4gkk5rdj6mbakig2/lib/python3.7/site-packages/numpy/distutils/system_info.py", line 444, in get_info
    return cl().get_info(notfound_action)
  File "/Users/Adam/spack/opt/spack/darwin-mojave-x86_64/clang-10.0.1-apple/py-numpy-1.17.0-tt562t4vqgt2jc6j4gkk5rdj6mbakig2/lib/python3.7/site-packages/numpy/distutils/system_info.py", line 690, in get_info
    self.calc_info()
  File "/Users/Adam/spack/opt/spack/darwin-mojave-x86_64/clang-10.0.1-apple/py-numpy-1.17.0-tt562t4vqgt2jc6j4gkk5rdj6mbakig2/lib/python3.7/site-packages/numpy/distutils/system_info.py", line 1139, in calc_info
    opt = self.get_option_single('mkl_libs', 'libraries')
  File "/Users/Adam/spack/opt/spack/darwin-mojave-x86_64/clang-10.0.1-apple/py-numpy-1.17.0-tt562t4vqgt2jc6j4gkk5rdj6mbakig2/lib/python3.7/site-packages/numpy/distutils/system_info.py", line 659, in get_option_single
    section=self.section, options='[{}]'.format(', '.join(options))))
numpy.distutils.system_info.AliasedOptionError:
    Aliases entries in config files should not be existing.
    In section 'mkl' we found multiple appearances of options [mkl_libs, libraries].

It seems like something might be wrong with my numpy installation, but it passed all of its unit tests. Is numexpr 2.6.9 not compatible with numpy 1.17.0? How can I debug this?

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Comments: 17 (6 by maintainers)

Most upvoted comments

I added site.cfg to the MANIFEST.in file, which then builds an sdist without the offending file, in 8ea8c7406c85c2e794cc0bafd180f0edcf0d690d. Sorry about that, I had no idea I was uploading my own site.cfg. I’ll start prepping for a 2.7.0 release.

It looks like it picks up my own site.cfg then, even though it is in .gitignore. We are well past time for a new release, so let me look into excluding it via setuptools.

Mystery solved! Since numexpr 2.6.6, the tarball downloaded from PyPI contains a site.cfg alongside site.cfg.example that overrides all settings from numpy, and contains:

[mkl]
library_dirs=/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/mkl/lib/intel64;/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/compiler/lib/intel64
include_dirs=/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/mkl/include
mkl_libs = mkl_intel_lp64, mkl_intel_thread, mkl_core, libiomp5md

That explains where the Windows paths are coming from, and why numexpr complains that there are multiple appearances of [mkl]. It looks like the tarballs downloaded from GitHub do not contain this site.cfg, so I’ll switch to using those. However, the site.cfg should be removed from the PyPI tarballs if you want them to build properly.