sahandha / eif

Extended Isolation Forest for Anomaly Detection
Other
445 stars 117 forks source link

Unable to install eif on Py3.9 #39

Open HBAhmad opened 1 month ago

HBAhmad commented 1 month ago

(tf_gpu) C:\Windows\system32>pip install eif Collecting eif Using cached eif-2.0.2.tar.gz (1.6 MB) Preparing metadata (setup.py) ... done Requirement already satisfied: numpy in c:\anaconda3\envs\tf_gpu\lib\site-packages (from eif) (1.23.3) Requirement already satisfied: cython in c:\anaconda3\envs\tf_gpu\lib\site-packages (from eif) (3.0.10) 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 ╰─> [94 lines of output] running bdist_wheel running build running build_py creating build creating build\lib.win-amd64-cpython-39 copying eif_old.py -> build\lib.win-amd64-cpython-39 copying version.py -> build\lib.win-amd64-cpython-39 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' 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):
    File "<string>", line 2, in <module>
    File "<pip-setuptools-caller>", line 34, in <module>
    File "C:\Users\Lenovo\AppData\Local\Temp\pip-install-eyg4vr1i\eif_6cca4cd17cdc4fa69e51f5e9a9ff75e4\setup.py", line 23, in <module>
      setup(
    File "C:\anaconda3\envs\tf_gpu\lib\site-packages\setuptools\__init__.py", line 104, in setup
      return distutils.core.setup(**attrs)
    File "C:\anaconda3\envs\tf_gpu\lib\site-packages\setuptools\_distutils\core.py", line 184, in setup
      return run_commands(dist)
    File "C:\anaconda3\envs\tf_gpu\lib\site-packages\setuptools\_distutils\core.py", line 200, in run_commands
      dist.run_commands()
    File "C:\anaconda3\envs\tf_gpu\lib\site-packages\setuptools\_distutils\dist.py", line 969, in run_commands
      self.run_command(cmd)
    File "C:\anaconda3\envs\tf_gpu\lib\site-packages\setuptools\dist.py", line 967, in run_command
      super().run_command(command)
    File "C:\anaconda3\envs\tf_gpu\lib\site-packages\setuptools\_distutils\dist.py", line 988, in run_command
      cmd_obj.run()
    File "C:\anaconda3\envs\tf_gpu\lib\site-packages\wheel\bdist_wheel.py", line 368, in run
      self.run_command("build")
    File "C:\anaconda3\envs\tf_gpu\lib\site-packages\setuptools\_distutils\cmd.py", line 316, in run_command
      self.distribution.run_command(command)
    File "C:\anaconda3\envs\tf_gpu\lib\site-packages\setuptools\dist.py", line 967, in run_command
      super().run_command(command)
    File "C:\anaconda3\envs\tf_gpu\lib\site-packages\setuptools\_distutils\dist.py", line 988, in run_command
      cmd_obj.run()
    File "C:\anaconda3\envs\tf_gpu\lib\site-packages\setuptools\_distutils\command\build.py", line 132, in run
      self.run_command(cmd_name)
    File "C:\anaconda3\envs\tf_gpu\lib\site-packages\setuptools\_distutils\cmd.py", line 316, in run_command
      self.distribution.run_command(command)
    File "C:\anaconda3\envs\tf_gpu\lib\site-packages\setuptools\dist.py", line 967, in run_command
      super().run_command(command)
    File "C:\anaconda3\envs\tf_gpu\lib\site-packages\setuptools\_distutils\dist.py", line 988, in run_command
      cmd_obj.run()
    File "C:\anaconda3\envs\tf_gpu\lib\site-packages\setuptools\_distutils\command\build_ext.py", line 359, in run
      self.build_extensions()
    File "C:\anaconda3\envs\tf_gpu\lib\site-packages\setuptools\_distutils\command\build_ext.py", line 479, in build_extensions
      self._build_extensions_serial()
    File "C:\anaconda3\envs\tf_gpu\lib\site-packages\setuptools\_distutils\command\build_ext.py", line 505, in _build_extensions_serial
      self.build_extension(ext)
    File "C:\anaconda3\envs\tf_gpu\lib\site-packages\Cython\Distutils\build_ext.py", line 130, in build_extension
      new_ext = cythonize(
    File "C:\anaconda3\envs\tf_gpu\lib\site-packages\Cython\Build\Dependencies.py", line 1154, in cythonize
      cythonize_one(*args)
    File "C:\anaconda3\envs\tf_gpu\lib\site-packages\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