参考博客(写的超级好,完美解决了问题)
错误
ImportError: Building module dtw failed: ["distutils.errors.CompileError: command 'D:\\\\Program Files (x86)\\\\Microsoft Visual Studio\\\\2019\\\\Preview\\\\VC\\\\Tools\\\\MSVC\\\\14.24.28314\\\\bin\\\\HostX86\\\\x64\\\\cl.exe' failed with exit status 2\n"]
天啦噜,这个问题花了半个多小时解决。虽然最后是解决了,但其实也不是很懂里面的原理,幸好网上有相关资料,不然真得花好多时间走更多弯路。
原来,.pyx文件在python语言中属于外部模块,因为是和C语言混合编译的,要成功使用这个模块的代码,在编译整个项目之前,需要首先把.pyx文件编译build通过,生成python代码;然后需要把生成的代码导入到项目中
.pyx文件的编译
我就是一直卡在这一步,我不知道怎么编译.pyx文件。原来,需要专门写一个setup.py模块,专用用于编译这个.pyx文件。
from distutils.core import setup
from Cython.Build import cythonize
import numpy as np
setup(
ext_modules=cythonize('D:\\Users\\Administrator\\PycharmProjects\\dataAug\\venv\\Scripts\\src\\aaltd18-master\\distances\\dtw\\dtw.pyx'),
include_dirs=[np.get_include()]
)
然后,用setup.py编译。.pyx文件并不是直接执行setup.py就行的,需要使用命令,所以需要在命令行或者anaconda prompt中输入命令。
我之前一直没明白要用命令行,直接在pycharm中执行setup.py,出错
import setup
usage: [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
or: --help [cmd1 cmd2 ...]
or: --help-commands
or: cmd --help
error: no commands supplied
正确方法(使用anaconda prompt):
(base) C:\Users\Administrator