错误1:AttributeError: ‘MSVCCompiler’ object has no attribute ‘compiler’:
好不容易下载个Git成功运行 sh make.sh,结果又来个AttributeError: ‘MSVCCompiler’ object
has no attribute ‘compiler’,如图:
研究了半天发现是因为源代码由linux环境下的compiler编译,但在Windows对应的是MSVCCompiler,并不支持!解释如图所言:
想哭…果然Windows跑个算法还是太强求了…但我还是秉承着不放弃的心态!找了个解决办法!据说有gcc就能运行,so…我去下载了个MinGW,在Windows下安装gcc…直接点击文字吧…这是我看了那么多文章,找到的最容易实现的方法了。
然而这只是个开端~~~我也开始想放弃了…
错误2:ModuleNotFoundError: No module named ‘utils.nms.cpu_nms’:
解决了上面这个问题很快就迎来这个新问题,如图:
这都不是事,网上有详细的解释。只要将.pyx文件(linux环境)转为.pyd文件(windows环境),Windows的python就可以支持导入。
写一个setup.py文件,代码如下:
import sys
sys.path.insert(0, "..")
from distutils.core import setup
from distutils.extension import Extension
from Cython.Build import cythonize
from Cython.Distutils import build_ext
import numpy as np
# ext_module = cythonize("Test.pyx") # Test.pyx为需要转换的文件
ext_module = Extension(
"Test",
["Test.pyx"],
extra_compile_args=["/openmp"],
extra_link_args=["/openmp"],
)
setup(
cmdclass={'build_ext': build_ext},
ext_modules=[ext_module],
include_dirs=[np.get_include()]
)
运行输入指令:
python setup.py build_ext --inplace
运行结束会得到一个.pyd文件和一个.c文件,还有个build文件夹,这就成功了。.pyd文件就是我们想要的,将之前的.pyx文件替换即可…