pythonnumpydllpyinstallerintel-mkl

Pyinstaller numpy "Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll"


I'm new with python apps. I'm trying to build my python GUI app with pyinstaller. My app depends on the following packages: PyQt4, numpy, pyqtgraph, h5py. I'm working with WinPython-32bit-3.4.4.1.

I build the app with this command:

pyinstaller --hidden-import=h5py.defs --hidden-import=h5py.utils --hidden-import=h5py.h5ac --hidden-import=h5py._proxy VOGE.py

I launch my app with the exe file in the dist directory created by pyinstaller and it seems work fine until the program call numpy and crash with this error:

Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll

The mkl_intel_thread.dll is not present in the software directory; but with the file copied in the root dir of the program I got the same error

Thanks for your help


Solution

  • I created a hook-numpy.py to deal with this problem:

    from PyInstaller import log as logging 
    from PyInstaller import compat
    from os import listdir
    
    libdir = compat.base_prefix + "/lib"
    mkllib = filter(lambda x : x.startswith('libmkl_'), listdir(libdir))
    if mkllib <> []: 
       logger = logging.getLogger(__name__)
       logger.info("MKL installed as part of numpy, importing that!")
       binaries = map(lambda l: (libdir + "/" + l, ''), mkllib)
    

    In my case, conda is installing the mkl libraries to speed up numpy and scipy.