scikit-learn-contrib / py-earth

A Python implementation of Jerome Friedman's Multivariate Adaptive Regression Splines
http://contrib.scikit-learn.org/py-earth/
BSD 3-Clause "New" or "Revised" License
455 stars 122 forks source link

install #86

Closed volvador closed 8 years ago

volvador commented 8 years ago

Hello, On my RHEL7, I am trying to install py-earth and getting this link error:

/usr/bin/ld: cannot find -lcblas I have packages blas, blas-devel, atlas and atlas-devel installed.

The compilation command printed after this error specifies

-L/usr/lib64/atlas -lcblas -lm .... And for completeness, the directory /usr/lib64/atlas contains the following files and symlinks

libsatlas.so -> libsatlas.so.3.10 libsatlas.so.3 -> libsatlas.so.3.10 libsatlas.so.3.10 libtatlas.so -> libtatlas.so.3.10 libtatlas.so.3 -> libtatlas.so.3.10 libtatlas.so.3.10

I have the same error when I try to install from source and when I try a pip install. Can you please help with that?

Thanks

jcrudy commented 8 years ago

@volvador I'm afraid I don't know what the problem might be (I'm not much of an expert on C compilation/linking issues). I assume you have scipy installed? Here are a few things I can think of, but I'm not sure if they'll help:

  1. setup.py uses numpy.get_include() to find the include_dirs for compilation. Perhaps get_include is not returning the right thing on your setup for some reason.
  2. Instead of using the setup.py script, call gcc directly from the terminal. This way you can have more direct control over linking. This may help: http://stackoverflow.com/questions/6985109/how-to-compile-c-code-from-cython-with-gcc
  3. Post this issue as a question on stack overflow. Perhaps someone there would have an idea.

I hope you find a solution. If you discover it's a bug in py-earth, please do post here again with details. I will try to fix it as soon as possible. Also feel free to submit a pull request if you feel so inclined. Even if it's not a bug in py-earth, please post your solution here if you get a chance, as it may help someone else in the future.

volvador commented 8 years ago

Thanks for your answer. I posted the question on SO without success. I think the issue is that the linker must in someway replace linking with cblas with linking with atlas, but I do not know how to push it to do that. Thank you anyway for your efforts in creating this library. I will come back here if I find a solution.

volvador commented 8 years ago

I was wondering if the change of the installation mode from eggs and setup.py to the new wheel mode can solve this issue. What I understand is that the wheel will contain the precompiled binaries..

jcrudy commented 8 years ago

Possibly, but I really don't know much about wheel. I assume if it includes pre-compiled binaries then it must be compiled on a system similar to the one it's being run on.

Thinking about your problem more, I really don't see why it should be happening, since py-earth doesn't actually ever use BLAS directly. Rather, it uses numpy and scipy which themselves use BLAS. Are numpy and scipy working on your system?

My email address is on my github profile. If you send me an email, I'll be happy to reply with a copy of the compiled binaries. Not sure if they would work for you if they're compiled on my system, but I suppose it's worth a try.

mehdidc commented 8 years ago

@volvador @jcrudy I am wondering, has the problem been solved ? if not, @volvador do you have libcblas anywhere in your system? it seems people had a similar issue in Centos 7 (https://github.com/fommil/netlib-java/issues/66), libcblas is available in Centos 6.5 but not in Centos 7. You could try to install the old atlas directly from rpm : http://pkgs.org/centos-6/centos-x86_64/atlas-3.8.4-2.el6.x86_64.rpm.html . Maybe you could also try to use anaconda (https://www.continuum.io/downloads) , I usually have much less installation/compilation problems with it.

jcrudy commented 8 years ago

Closing this issue. If anyone experiences a similar problem in the future, please reopen.