wagner-d/TimeSeAD

Installation Problem with 'eif' module

Opened this issue · 1 comments

I was trying to install the TimeSeAD library by running pip install -e . from within the repo, but encountered the following error:

Building wheels for collected packages: eif
  Building wheel for eif (setup.py) ... error
  error: subprocess-exited-with-error
  
  × python setup.py bdist_wheel did not run successfully.
  │ exit code: 1
  ╰─> [95 lines of output]
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-cpython-310
      copying eif_old.py -> build/lib.linux-x86_64-cpython-310
      copying version.py -> build/lib.linux-x86_64-cpython-310
      running egg_info
      writing eif.egg-info/PKG-INFO
      writing dependency_links to eif.egg-info/dependency_links.txt
      writing requirements to eif.egg-info/requires.txt
      writing top-level names to eif.egg-info/top_level.txt
      reading manifest file 'eif.egg-info/SOURCES.txt'
      reading manifest template 'MANIFEST.in'
      warning: no files found matching 'Readme.md'
      writing manifest file 'eif.egg-info/SOURCES.txt'
      running build_ext
      Compiling _eif.pyx because it changed.
      [1/1] Cythonizing _eif.pyx
      warning: _eif.pyx:12:8: Global name __eif matched from within class scope in contradiction to to Python 'class private name' rules. This may change in a future release.
      warning: _eif.pyx:12:8: Global name __eif matched from within class scope in contradiction to to Python 'class private name' rules. This may change in a future release.
      
      Error compiling Cython file:
      ------------------------------------------------------------
      ...
          @cython.boundscheck(False)
          @cython.wraparound(False)
          def __cinit__ (self, np.ndarray[double, ndim=2] X not None, int ntrees, int sample_size, int limit=0, int ExtensionLevel=0, int seed=-1):
              if ExtensionLevel < 0:
                  raise Exception("Wrong Extension")
              self.thisptr = new __eif.iForest (ntrees, sample_size, limit, ExtensionLevel, seed)
                             ^
      ------------------------------------------------------------
      
      _eif.pyx:31:23: Operation only allowed in c++
      
      Error compiling Cython file:
      ------------------------------------------------------------
      ...
          @property
          def limit(self):
              return self._limit
      
          def __dealloc__ (self):
              del self.thisptr
              ^
      ------------------------------------------------------------
      
      _eif.pyx:51:8: Operation only allowed in c++
      Traceback (most recent call last): 
      ......Cython/Build/Dependencies.py", line 1321, in cythonize_one
          raise CompileError(None, pyx_file)
      Cython.Compiler.Errors.CompileError: _eif.pyx
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for eif
Running setup.py clean for eif
Failed to build eif
ERROR: Could not build wheels for eif, which is required to install pyproject.toml-based projects.

I attempted to google the issue but could not find a solution.
Could anyone provide some insights on how to resolve this issue?
Thank you in advance for your help!

Hey! Could you tell me if you are following the installation setup provided in the documentation ?
Are you using conda or some other virtual environment setup? Also your operating system?

I tried a fresh install on a linux container with conda with the CPU instructions and the installation ran fine. So a bit more insight would be helpful.