Yi-Chun Sun
Yi-Chun Sun

Reputation: 11

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

While testing microsoft's anomaly detector project (https://github.com/microsoft/anomalydetector), this showed up:

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"]

I've googled the error message but found that most people met this problem while using pip install, which is not my case, and their solutions do not work for me. I've also tried running the program outside the anaconda virtual environment too, but the same message still shows.

Here is the full message:

(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 or directory
Traceback (most recent call last):
File "C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils_msvccompiler.py", line 412, in compile self.spawn(args)
File "C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils_msvccompiler.py", line 518, in spawn return super().spawn(cmd)
File "C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils\ccompiler.py", line 910, in spawn spawn(cmd, dry_run=self.dry_run)
File "C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils\spawn.py", line 38, in spawn _spawn_nt(cmd, search_path, dry_run=dry_run)
File "C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils\spawn.py", line 80, in _spawn_nt raise DistutilsExecError(
distutils.errors.DistutilsExecError: command 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe' failed with exit status 2

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\site-packages\pyximport\pyximport.py", line 214, in load_module so_path = build_module(module_name, pyxfilename, pyxbuild_dir,
File "C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\site-packages\pyximport\pyximport.py", line 186, in build_module so_path = pyxbuild.pyx_to_dll(pyxfilename, extension_mod,
File "C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\site-packages\pyximport\pyxbuild.py", line 102, in pyx_to_dll dist.run_commands()
File "C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils\dist.py", line 966, in run_commands self.run_command(cmd)
File "C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils\dist.py", line 985, in run_command cmd_obj.run()
File "C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\site-packages\Cython\Distutils\old_build_ext.py", line 186, in run _build_ext.build_ext.run(self)
File "C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils\command\build_ext.py", line 340, in run self.build_extensions()
File "C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\site-packages\Cython\Distutils\old_build_ext.py", line 195, in build_extensions _build_ext.build_ext.build_extensions(self)
File "C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils\command\build_ext.py", line 449, in build_extensions self._build_extensions_serial()
File "C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils\command\build_ext.py", line 474, in _build_extensions_serial self.build_extension(ext)
File "C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils\command\build_ext.py", line 528, in build_extension objects = self.compiler.compile(sources,
File "C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils_msvccompiler.py", line 414, in compile raise CompileError(msg)
distutils.errors.CompileError: command 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe' failed with exit status 2

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "generate_data.py", line 28, in from srcnn.utils import *
File "C:\Users\jimsu\OneDrive\桌面\srcnn\anomalydetector-master\srcnn\utils.py", line 37, in from msanomalydetector.util import average_filter
File "C:\Users\jimsu\OneDrive\桌面\srcnn\anomalydetector-master\msanomalydetector_init_.py", line 1, in
from msanomalydetector.spectral_residual import SpectralResidual File "C:\Users\jimsu\OneDrive\桌面\srcnn\anomalydetector-master\msanomalydetector\spectral_residual.py", line 31, in import msanomalydetector.boundary_utils as boundary_helper
File "C:\Users\jimsu\OneDrive\桌面\srcnn\anomalydetector-master\msanomalydetector\boundary_utils.py", line 5, in from msanomalydetector._anomaly_kernel_cython import median_filter
File "C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\site-packages\pyximport\pyximport.py", line 459, in load_module module = load_module(fullname, self.path,
File "C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\site-packages\pyximport\pyximport.py", line 231, in load_module raise exc.with_traceback(tb)
File "C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\site-packages\pyximport\pyximport.py", line 214, in load_module so_path = build_module(module_name, pyxfilename, pyxbuild_dir,
File "C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\site-packages\pyximport\pyximport.py", line 186, in build_module so_path = pyxbuild.pyx_to_dll(pyxfilename, extension_mod,
File "C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\site-packages\pyximport\pyxbuild.py", line 102, in pyx_to_dll dist.run_commands()
File "C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils\dist.py", line 966, in run_commands self.run_command(cmd)
File "C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils\dist.py", line 985, in run_command cmd_obj.run()
File "C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\site-packages\Cython\Distutils\old_build_ext.py", line 186, in run _build_ext.build_ext.run(self)
File "C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils\command\build_ext.py", line 340, in run self.build_extensions()
File "C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\site-packages\Cython\Distutils\old_build_ext.py", line 195, in build_extensions _build_ext.build_ext.build_extensions(self)
File "C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils\command\build_ext.py", line 449, in build_extensions self._build_extensions_serial()
File "C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils\command\build_ext.py", line 474, in _build_extensions_serial self.build_extension(ext)
File "C:\Users\jimsu\anaconda3\envs\srcnn_python38\lib\distutils\command\build_ext.py", line 528, in build_extension objects = self.compiler.compile(sources,
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"]

Upvotes: 0

Views: 491

Answers (1)

DavidW
DavidW

Reputation: 30890

You've somehow(?) decided to use pyximport yourself, and it doesn't know how to find the Numpy files. I honestly don't know how you've done this since it isn't in any of their files. You also seem to be using Pyrex (which was the precursor to Cython); again, I don't really know how but this isn't what you want.

Either way, this is not the way you should be importing their Cython modules.

The correct way to set the msanomalydetector package up is to run python setup.py build_ext --inplace, or by installing it using Pip. I suggest you do that in a fresh Anaconda environment with on Cython, Numpy and Pandas.

Upvotes: 2

Related Questions