raise CompileError(msg) ImportError: Building module msanomalydetector._anomaly_kernel_cython failed

raise CompileError(msg) ImportError: Building module msanomalydetector._anomaly_kernel_cython failed

在测试 Microsoft 的异常检测器项目 (https://github.com/microsoft/anomalydetector) 时,出现了:

File "C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils_msvccompiler.py", line 414, in compile raise CompileError(msg) ImportError: Building module msanomalydetector._anomaly_kernel_cython failed: ["distutils.errors.CompileError: command 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe' failed with exit status 2\n"]

我用谷歌搜索了错误消息,但发现大多数人在使用 pip install 时遇到了这个问题,但我不是这种情况,他们的解决方案对我不起作用。我也尝试过 运行 在 anaconda 虚拟环境之外运行该程序,但仍然显示相同的消息。

完整消息如下:

(srcnn_python38) C:\Users\jimsu\OneDrive\桌面\srcnn\anomalydetector-master>python generate_data.py -- samples sample
_anomaly_kernel_cython.c
C:\Users\jimsu.pyxbld\temp.win-amd64-3.8\Release\pyrex\msanomalydetector_anomaly_kernel_cython.c(612): fatal error C1083: Cannot open include file: 'numpy/arrayobject.h': No such file 或目录
追溯(最近一次通话最后一次):
文件“C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils_msvccompiler.py”,第 412 行,在编译中 self.spawn(参数)
文件“C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils_msvccompiler.py”,第 518 行,在 spawn 中 return super().spawn(cmd)
文件“C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils\ccompiler.py”,第 910 行,在 spawn 中 产卵(命令,dry_run=self.dry_run)
文件“C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils\spawn.py”,第 38 行,在 spawn 中 _spawn_nt(cmd, search_path, dry_run=dry_run)
文件“C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils\spawn.py”,第 80 行,在 _spawn_nt 中 提高 DistutilsExecError(
distutils.errors.DistutilsExecError:命令 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe' 失败,退出状态为 2

在处理上述异常的过程中,又发生了异常:

追溯(最近调用最后):
文件“C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\site-packages\pyximport\pyximport.py”,第 214 行,在 load_module so_path = build_module(module_name, pyxfilename, pyxbuild_dir,
文件“C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\site-packages\pyximport\pyximport.py”,第 186 行,在 build_module so_path = pyxbuild.pyx_to_dll(pyx文件名, extension_mod,
文件“C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\site-packages\pyximport\pyxbuild.py”,第 102 行,在 pyx_to_dll dist.run_commands()
文件“C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils\dist.py”,第 966 行,在 run_commands 中 self.run_command(命令)
文件“C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils\dist.py”,第 985 行,在 run_command 中 cmd_obj.run()
文件“C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\site-packages\Cython\Distutils\old_build_ext.py”,第 186 行,在 运行 _build_ext.build_ext.run(自己)
文件“C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils\command\build_ext.py”,第 340 行,在 运行 中 self.build_extensions()
文件“C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\site-packages\Cython\Distutils\old_build_ext.py”,第 195 行,在 build_extensions _build_ext.build_ext.build_extensions(自己)
文件“C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils\command\build_ext.py”,第 449 行,在 build_extensions 中 self._build_extensions_serial()
文件“C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils\command\build_ext.py”,第 474 行,在 _build_extensions_serial self.build_extension(分机)
文件“C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils\command\build_ext.py”,第 528 行,在 build_extension 对象 = self.compiler.compile(来源,
文件“C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils_msvccompiler.py”,第 414 行,在编译中 引发 CompileError(msg)
distutils.errors.CompileError:命令 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe' 失败,退出状态为 2

在处理上述异常的过程中,又发生了异常:

追溯(最近调用最后):
文件“generate_data.py”,第 28 行,位于 从 srcnn.utils 导入 *
文件“C:\Users\jimsu\OneDrive\桌面\srcnn\anomalydetector-master\srcnn\utils.py”,第37行,在 从 msanomalydetector.util 导入 average_filter
文件“C:\Users\jimsu\OneDrive\桌面\srcnn\anomalydetector-master\msanomalydetector_init_.py”,第 1 行,在
来自 msanomalydetector.spectral_residual 导入 SpectralResidual 文件“C:\Users\jimsu\OneDrive\桌面\srcnn\anomalydetector-master\msanomalydetector\spectral_residual.py”,第 31 行,在 将 msanomalydetector.boundary_utils 导入为 boundary_helper
文件“C:\Users\jimsu\OneDrive\桌面\srcnn\anomalydetector-master\msanomalydetector\boundary_utils.py”,第 5 行,在 从 msanomalydetector._anomaly_kernel_cython 导入 median_filter
文件“C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\site-packages\pyximport\pyximport.py”,第 459 行,在 load_module 模块 = load_module(全名, self.path,
文件“C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\site-packages\pyximport\pyximport.py”,第 231 行,在 load_module 提高 exc.with_traceback(tb)
文件“C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\site-packages\pyximport\pyximport.py”,第 214 行,在 load_module so_path = build_module(module_name, pyxfilename, pyxbuild_dir,
文件“C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\site-packages\pyximport\pyximport.py”,第 186 行,在 build_module so_path = pyxbuild.pyx_to_dll(pyx文件名, extension_mod,
文件“C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\site-packages\pyximport\pyxbuild.py”,第 102 行,在 pyx_to_dll dist.run_commands()
文件“C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils\dist.py”,第 966 行,在 run_commands 中 self.run_command(命令)
文件“C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils\dist.py”,第 985 行,在 run_command 中 cmd_obj.run()
文件“C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\site-packages\Cython\Distutils\old_build_ext.py”,第 186 行,在 运行 _build_ext.build_ext.run(自己)
文件“C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils\command\build_ext.py”,第 340 行,在 运行 中 self.build_extensions()
文件“C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\site-packages\Cython\Distutils\old_build_ext.py”,第 195 行,在 build_extensions _build_ext.build_ext.build_extensions(自己)
文件“C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils\command\build_ext.py”,第 449 行,在 build_extensions 中 self._build_extensions_serial()
文件“C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils\command\build_ext.py”,第 474 行,在 _build_extensions_serial self.build_extension(分机)
文件“C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils\command\build_ext.py”,第 528 行,在 build_extension 对象 = self.compiler.compile(来源,
文件“C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils_msvccompiler.py”,第 414 行,在编译中 引发 CompileError(msg)
ImportError:构建模块 msanomalydetector._anomaly_kernel_cython 失败:[“distutils.errors.CompileError:命令 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe' 失败,退出状态为 2\n”]

您不知何故(?)决定自己使用 pyximport,但它不知道如何找到 Numpy 文件。老实说,我不知道你是怎么做到的,因为它不在他们的任何文件中。您似乎也在使用 Pyrex(它是 Cython 的前身);再一次,我真的不知道怎么做,但这不是你想要的。

无论如何,这不是您导入他们的 Cython 模块的方式。

设置 msanomalydetector 包的正确方法是 运行 python setup.py build_ext --inplace,或者使用 Pip 安装它。我建议您在全新的 Anaconda 环境中使用 Cython、Numpy 和 Pandas.

执行此操作