hdbscan 构建轮子失败 - python 版本 3.6.8

问题描述 投票:0回答:1

我尝试使用 pip 安装 hdbscan,但收到以下错误。 我用pip安装。使用 Conda 不起作用,因为该程序需要较旧的 Python 版本。 Visual Studio 构建工具已安装。

Collecting hdbscan==0.8.26
  Using cached hdbscan-0.8.26.tar.gz (4.7 MB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Requirement already satisfied: cython>=0.27 in c:\qlik\qlik-py-tools-8.1\qlik-py-env\lib\site-packages (from hdbscan==0.8.26) (0.29.14)
Requirement already satisfied: numpy>=1.16.0 in c:\qlik\qlik-py-tools-8.1\qlik-py-env\lib\site-packages (from hdbscan==0.8.26) (1.17.5)
Requirement already satisfied: joblib in c:\qlik\qlik-py-tools-8.1\qlik-py-env\lib\site-packages (from hdbscan==0.8.26) (0.11)
Requirement already satisfied: six in c:\qlik\qlik-py-tools-8.1\qlik-py-env\lib\site-packages (from hdbscan==0.8.26) (1.16.0)
Requirement already satisfied: scikit-learn>=0.17 in c:\qlik\qlik-py-tools-8.1\qlik-py-env\lib\site-packages (from hdbscan==0.8.26) (0.23.1)
Requirement already satisfied: scipy>=0.9 in c:\qlik\qlik-py-tools-8.1\qlik-py-env\lib\site-packages (from hdbscan==0.8.26) (1.4.1)
Requirement already satisfied: threadpoolctl>=2.0.0 in c:\qlik\qlik-py-tools-8.1\qlik-py-env\lib\site-packages (from scikit-learn>=0.17->hdbscan==0.8.26) (3.1.0)
Building wheels for collected packages: hdbscan
  Building wheel for hdbscan (pyproject.toml) ... error
  ERROR: Command errored out with exit status 1:
   command: 'c:\qlik\qlik-py-tools-8.1\qlik-py-env\scripts\python.exe' 'c:\qlik\qlik-py-tools-8.1\qlik-py-env\lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py' build_wheel 'C:\Users\admeck\AppData\Local\Temp\tmpo74sn8jf'
       cwd: C:\Users\admeck\AppData\Local\Temp\pip-install-q5e5v7ff\hdbscan_47946ade5e1b4c3cb78dca867687f59a
  Complete output (158 lines):
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build\lib.win-amd64-3.6
  creating build\lib.win-amd64-3.6\hdbscan
  copying hdbscan\hdbscan_.py -> build\lib.win-amd64-3.6\hdbscan
  copying hdbscan\plots.py -> build\lib.win-amd64-3.6\hdbscan
  copying hdbscan\prediction.py -> build\lib.win-amd64-3.6\hdbscan
  copying hdbscan\robust_single_linkage_.py -> build\lib.win-amd64-3.6\hdbscan
  copying hdbscan\validity.py -> build\lib.win-amd64-3.6\hdbscan
  copying hdbscan\__init__.py -> build\lib.win-amd64-3.6\hdbscan
  creating build\lib.win-amd64-3.6\hdbscan\tests
  copying hdbscan\tests\test_hdbscan.py -> build\lib.win-amd64-3.6\hdbscan\tests
  copying hdbscan\tests\test_rsl.py -> build\lib.win-amd64-3.6\hdbscan\tests
  copying hdbscan\tests\__init__.py -> build\lib.win-amd64-3.6\hdbscan\tests
  running build_ext
  Compiling hdbscan/_hdbscan_tree.pyx because it changed.
  [1/1] Cythonizing hdbscan/_hdbscan_tree.pyx
  building 'hdbscan._hdbscan_tree' extension
  creating build\temp.win-amd64-3.6
  creating build\temp.win-amd64-3.6\Release
  creating build\temp.win-amd64-3.6\Release\hdbscan
  C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.38.33130\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -Ic:\qlik\qlik-py-tools-8.1\qlik-py-env\include "-IC:\Program Files\Python36\include" "-IC:\Program Files\Python36\include" -IC:\Users\admeck\AppData\Local\Temp\pip-build-env-u3h706kv\overlay\Lib\site-packages\numpy\core\include "-IC:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.38.33130\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\VS\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\um" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\winrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\cppwinrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" /Tchdbscan/_hdbscan_tree.c /Fobuild\temp.win-amd64-3.6\Release\hdbscan/_hdbscan_tree.obj
  _hdbscan_tree.c
  C:\Users\admeck\AppData\Local\Temp\pip-build-env-u3h706kv\overlay\Lib\site-packages\numpy\core\include\numpy\npy_1_7_deprecated_api.h(14) : Warning Msg: Using deprecated NumPy API, disable it with #define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
  C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.38.33130\bin\HostX86\x64\link.exe /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:c:\qlik\qlik-py-tools-8.1\qlik-py-env\libs "/LIBPATH:C:\Program Files\Python36\libs" "/LIBPATH:C:\Program Files\Python36" /LIBPATH:c:\qlik\qlik-py-tools-8.1\qlik-py-env\PCbuild\amd64 "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.38.33130\lib\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64" /EXPORT:PyInit__hdbscan_tree build\temp.win-amd64-3.6\Release\hdbscan/_hdbscan_tree.obj /OUT:build\lib.win-amd64-3.6\hdbscan\_hdbscan_tree.cp36-win_amd64.pyd /IMPLIB:build\temp.win-amd64-3.6\Release\hdbscan\_hdbscan_tree.cp36-win_amd64.lib
     Bibliothek "build\temp.win-amd64-3.6\Release\hdbscan\_hdbscan_tree.cp36-win_amd64.lib" und Objekt "build\temp.win-amd64-3.6\Release\hdbscan\_hdbscan_tree.cp36-win_amd64.exp" werden erstellt.
  Code wird generiert.
  Codegenerierung ist abgeschlossen.
  C:\Users\admeck\AppData\Local\Temp\pip-build-env-u3h706kv\overlay\Lib\site-packages\Cython\Compiler\Main.py:381: FutureWarning: Cython directive 'language_level' not set, using '3str' for now (Py3). This has changed from earlier releases! File: C:\Users\admeck\AppData\Local\Temp\pip-install-q5e5v7ff\hdbscan_47946ade5e1b4c3cb78dca867687f59a\hdbscan\_hdbscan_tree.pyx
    tree = Parsing.p_module(s, pxd, full_module_name)
  C:\Users\admeck\AppData\Local\Temp\pip-build-env-u3h706kv\overlay\Lib\site-packages\Cython\Compiler\Main.py:381: FutureWarning: Cython directive 'language_level' not set, using '3str' for now (Py3). This has changed from earlier releases! File: C:\Users\admeck\AppData\Local\Temp\pip-install-q5e5v7ff\hdbscan_47946ade5e1b4c3cb78dca867687f59a\hdbscan\_hdbscan_linkage.pyx
    tree = Parsing.p_module(s, pxd, full_module_name)

  Error compiling Cython file:
  ------------------------------------------------------------
  ...
  import numpy as np
  cimport numpy as np

  from libc.float cimport DBL_MAX

  from dist_metrics cimport DistanceMetric
  ^
  ------------------------------------------------------------

  hdbscan\_hdbscan_linkage.pyx:12:0: 'dist_metrics.pxd' not found

  Error compiling Cython file:
  ------------------------------------------------------------
  ...
  import numpy as np
  cimport numpy as np

  from libc.float cimport DBL_MAX

  from dist_metrics cimport DistanceMetric
  ^
  ------------------------------------------------------------

  hdbscan\_hdbscan_linkage.pyx:12:0: 'dist_metrics\DistanceMetric.pxd' not found

  Error compiling Cython file:
  ------------------------------------------------------------
  ...


  cpdef np.ndarray[np.double_t, ndim=2] mst_linkage_core_vector(
          np.ndarray[np.double_t, ndim=2, mode='c'] raw_data,
          np.ndarray[np.double_t, ndim=1, mode='c'] core_distances,
          DistanceMetric dist_metric,
          ^
  ------------------------------------------------------------

  hdbscan\_hdbscan_linkage.pyx:58:8: 'DistanceMetric' is not a type identifier

  Error compiling Cython file:
  ------------------------------------------------------------
  ...
          for j in range(dim):
              if in_tree[j]:
                  continue

              right_value = current_distances[j]
              left_value = dist_metric.dist(&raw_data_ptr[num_features *
                                            ^
  ------------------------------------------------------------

  hdbscan\_hdbscan_linkage.pyx:119:42: Cannot convert 'double_t *' to Python object

  Error compiling Cython file:
  ------------------------------------------------------------
  ...
                  continue

              right_value = current_distances[j]
              left_value = dist_metric.dist(&raw_data_ptr[num_features *
                                                          current_node],
                                            &raw_data_ptr[num_features * j],
                                            ^
  ------------------------------------------------------------

  hdbscan\_hdbscan_linkage.pyx:121:42: Cannot convert 'double_t *' to Python object
  Compiling hdbscan/_hdbscan_linkage.pyx because it changed.
  [1/1] Cythonizing hdbscan/_hdbscan_linkage.pyx
  Traceback (most recent call last):
    File "c:\qlik\qlik-py-tools-8.1\qlik-py-env\lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py", line 363, in <module>
      main()
    File "c:\qlik\qlik-py-tools-8.1\qlik-py-env\lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py", line 345, in main
      json_out['return_val'] = hook(**hook_input['kwargs'])
    File "c:\qlik\qlik-py-tools-8.1\qlik-py-env\lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py", line 262, in build_wheel
      metadata_directory)
    File "C:\Users\admeck\AppData\Local\Temp\pip-build-env-u3h706kv\overlay\Lib\site-packages\setuptools\build_meta.py", line 231, in build_wheel
      wheel_directory, config_settings)
    File "C:\Users\admeck\AppData\Local\Temp\pip-build-env-u3h706kv\overlay\Lib\site-packages\setuptools\build_meta.py", line 215, in _build_with_temp_dir
      self.run_setup()
    File "C:\Users\admeck\AppData\Local\Temp\pip-build-env-u3h706kv\overlay\Lib\site-packages\setuptools\build_meta.py", line 268, in run_setup
      self).run_setup(setup_script=setup_script)
    File "C:\Users\admeck\AppData\Local\Temp\pip-build-env-u3h706kv\overlay\Lib\site-packages\setuptools\build_meta.py", line 158, in run_setup
      exec(compile(code, __file__, 'exec'), locals())
    File "setup.py", line 96, in <module>
      setup(**configuration)
    File "C:\Users\admeck\AppData\Local\Temp\pip-build-env-u3h706kv\overlay\Lib\site-packages\setuptools\__init__.py", line 153, in setup
      return distutils.core.setup(**attrs)
    File "C:\Program Files\Python36\lib\distutils\core.py", line 148, in setup
      dist.run_commands()
    File "C:\Program Files\Python36\lib\distutils\dist.py", line 955, in run_commands
      self.run_command(cmd)
    File "C:\Program Files\Python36\lib\distutils\dist.py", line 974, in run_command
      cmd_obj.run()
    File "C:\Users\admeck\AppData\Local\Temp\pip-build-env-u3h706kv\overlay\Lib\site-packages\wheel\bdist_wheel.py", line 299, in run
      self.run_command('build')
    File "C:\Program Files\Python36\lib\distutils\cmd.py", line 313, in run_command
      self.distribution.run_command(command)
    File "C:\Program Files\Python36\lib\distutils\dist.py", line 974, in run_command
      cmd_obj.run()
    File "C:\Program Files\Python36\lib\distutils\command\build.py", line 135, in run
      self.run_command(cmd_name)
    File "C:\Program Files\Python36\lib\distutils\cmd.py", line 313, in run_command
      self.distribution.run_command(command)
    File "C:\Program Files\Python36\lib\distutils\dist.py", line 974, in run_command
      cmd_obj.run()
    File "setup.py", line 26, in run
      build_ext.run(self)
    File "C:\Program Files\Python36\lib\distutils\command\build_ext.py", line 339, in run
      self.build_extensions()
    File "C:\Program Files\Python36\lib\distutils\command\build_ext.py", line 448, in build_extensions
      self._build_extensions_serial()
    File "C:\Program Files\Python36\lib\distutils\command\build_ext.py", line 473, in _build_extensions_serial
      self.build_extension(ext)
    File "C:\Users\admeck\AppData\Local\Temp\pip-build-env-u3h706kv\overlay\Lib\site-packages\Cython\Distutils\build_ext.py", line 131, in build_extension
      ext,force=self.force, quiet=self.verbose == 0, **options
    File "C:\Users\admeck\AppData\Local\Temp\pip-build-env-u3h706kv\overlay\Lib\site-packages\Cython\Build\Dependencies.py", line 1154, in cythonize
      cythonize_one(*args)
    File "C:\Users\admeck\AppData\Local\Temp\pip-build-env-u3h706kv\overlay\Lib\site-packages\Cython\Build\Dependencies.py", line 1321, in cythonize_one
      raise CompileError(None, pyx_file)
  Cython.Compiler.Errors.CompileError: hdbscan/_hdbscan_linkage.pyx
  ----------------------------------------
  ERROR: Failed building wheel for hdbscan
Failed to build hdbscan
ERROR: Could not build wheels for hdbscan, which is required to install pyproject.toml-based projects

我正在运行以下bat 文件进行安装。 所有其他部分都可以工作。只是 hdbscan 失败。我正在尝试在 Windows 上安装此程序

@echo off
echo Setting up the Python virtual environment... & echo.
python -m venv "%~dp0\qlik-py-env"
echo.
echo Copying project files to the new directory... & echo.
xcopy /E /I "%~dp0\generated" "%~dp0\qlik-py-env\generated"
xcopy /E /I "%~dp0\core" "%~dp0\qlik-py-env\core"
xcopy /E /I "%~dp0\models" "%~dp0\qlik-py-env\models"
echo.
echo Activating the virtual environment... & echo.
cd /d "%~dp0\qlik-py-env\Scripts"
call activate
cd ..
echo.
echo Installing required packages... & echo.
python -m pip install --upgrade setuptools pip
pip install wheel==0.34.2
pip install grpcio==1.26.0 grpcio-tools==1.26.0 numpy==1.17.5 scipy==1.4.1 pandas==0.25.3 cython==0.29.14 joblib==0.11 holidays==0.9.11 pyyaml==5.3
pip install pystan==2.17
pip install fbprophet==0.4.post2
pip install scikit-learn==0.23.1
pip install hdbscan==0.8.26
pip install spacy==2.2.4
pip install efficient_apriori==1.0.0
pip install tensorflow==1.14.0
pip install keras==2.2.5
python -m spacy download en
echo.
echo Creating a new firewall rule for TCP port 50055... & echo.
netsh advfirewall firewall add rule name="Qlik PyTools" dir=in action=allow protocol=TCP localport=50055
echo.
echo Setup completed. Please check the log above for errors in red text. & echo.
echo Run Qlik-Py-Start.bat to start this Server Side Extension. & echo.
pause
python batch-file pip cython hdbscan
1个回答
0
投票

使用 conda 安装成功。最初Conda找不到正确的环境。以下代码段有效

conda install conda-forge::hdbscan
© www.soinside.com 2019 - 2024. All rights reserved.