Skip to content

setup.py does not work with NumPy manylinux1 wheel

Created by: siebenkopf

When I install a new virtual environment (using virtual_build.sh from bob.nightlies) by using the automatically downloaded NumPy wheel, I am not able to install bob.math in this environment. The error message that I get is:

$ virtualenv/bin/pip install bob.math
...
    LAPACK/BLAS configuration from NumPy:
     * system include directories:
     * defines: -DHAVE_CBLAS=None
     * linking arguments:
     * libraries: openblas
     * library directories: /usr/local/lib
...
    /usr/bin/ld: cannot find -lopenblas
...

After some investigations, I found that the reason is that the NumPy wheel is created using openBLAS: http://comments.gmane.org/gmane.comp.python.wheel-builders/18 which will result in the fact that the NumPy default options as used here: https://github.com/bioidiap/bob.math/blob/master/setup.py#L124 are not working. After installing libopenblas-dev locally, bob.math compiles and installs, but when I try to use it, I get the error message:

$ virtualenv/bin/python
>>> import bob.math
OSError: virtualenv/local/lib/python2.7/site-packages/bob/math/libbob_math.so: undefined symbol: dsyevd_

Apparently, it still does not work, as openBLAS does not seem to come with a dsyevd_ method.

My current solution is to force NumPy to be compiled from source, but this is not a good solution for people who are not very familiar with the installation process. A better solution would be to adapt the setup.py accordingly, i.e., to use the LAPACK/BLAS configuration that is available on the system, and do not rely on the NumPy build.