abess-team / abess

Fast Best-Subset Selection Library
https://abess.readthedocs.io/
Other
474 stars 41 forks source link

Version 0.4.7 crashing when LinearRegression.fit() invoked #525

Closed MattWenham closed 1 year ago

MattWenham commented 1 year ago

This is possibly related to issue #496.

Describe the bug Multiple attempts to use LinearRegression.fit() in version 0.4.7 appears to cause a crash. Unlike with #496, we are unable to build from source.

Code for Reproduction Any non-trivial invocation of LinearRegression.fit(). Uninstalling and then attempting to reinstall from source using pip install abess==0.4.7 --no-binary=abess results in an error:

  /tmp/pip-install-wejh_wj5/abess_7276a548a8a440aeae70ea9965e1f2b1/src/pywrap.cpp:1:10: fatal error: pybind11/eigen.h: No such file or directory
      1 | #include <pybind11/eigen.h>
        |          ^~~~~~~~~~~~~~~~~~
  compilation terminated.

Expected behavior LinearRegression.fit() should run, and package should compile from source.

Desktop (please complete the following information):

Current Workaround Compile version 0.4.6 from source.

MattWenham commented 1 year ago

On Linux-5.15.0-1039-azure (i.e. not WSL) LinearRegression.fit() appears to run, but compilation still crashes with the same error.

My apologies for effectively putting two bugs into one issue.

bbayukari commented 1 year ago

Hi @MattWenham, it's a pleasure to answer your question. Based on your information, the compilation error was caused by missing pybind11, a compiling tool that should be installed before installing abess from the source. This code may be helpful:

pip install pybind11[global]

The detailed installation way can be found in the documentation. Please message us if you have any more questions.

MattWenham commented 1 year ago

Thank you for your reply.

It turns out that my pybind installation is corrupted somehow, as both pip and conda see it as installed, but when I try to uninstall with pip, it can't be found to remove it.

I can compile 0.4.7 okay in a fresh environment.