【Python库安装填坑】faiss在Windows上的安装问题---from . import _swigfaiss ImportError: DLL load failed: 找不到指定的模块。


11月21号更新:经过GitHub大神指导,我终于发现faiss-gpu版为什么在VS code 不好使,但是 jupyter notebook却可以直接执行。具体内容参考"补充一"


Faiss的全称是Facebook AI Similarity Search。这是一个开源库,针对高维空间中的海量数据,提供了高效且可靠的检索方法。暴力检索耗时巨大,对于一个要求实时人脸识别的应用来说是不可取的。
而Faiss则为这种场景提供了一套解决方案。Faiss从两个方面改善了暴力搜索算法存在的问题:降低空间占用加快检索速度首先,Faiss中提供了若干种方法实现数据压缩,包括PCA、Product-Quantization等

安装这个库的时候,如果是用Windows平台的话,很容易出现问题,因为faiss官方维护比较多的是Linux系统版本,并且Windows平台没有faiss-gpu版本(我前几个月记得通过conda-forge方法成功安装GPU版本,但是今天一用貌似又出问题,到现在还没解决,没办法我只能用faiss-cpu版本凑合着了),所以为了不让自己下次再花那么多时间,这篇文章记录下这两天安装遇到的问题吧。

安装步骤

  1. 在anconda 环境里 输入 pip install faiss-cpu,开始安装
  2. 安装时可能会提示如下报警
    【Python库安装填坑】faiss在Windows上的安装问题---from . import _swigfaiss ImportError: DLL load failed: 找不到指定的模块。_第1张图片
    这里说我的numpy安装文件夹里找不到METDATA文件,我进入对应的文件夹发现的确没有什么文件,
  3. 重新安装numpy ,选1.21.4版本,pip install numpy == 1.21.4,安装完后进入numpy安装文件夹发现有需要的METADATA
    【Python库安装填坑】faiss在Windows上的安装问题---from . import _swigfaiss ImportError: DLL load failed: 找不到指定的模块。_第2张图片
  4. 运行你电脑里的faiss代码,比如:
import faiss
import numpy
faiss.Kmeans(10, 20).train(numpy.random.rand(1000, 10).astype('float32'))

有输出结果接证明安装成功




上面提到的安装问题还有个很奇怪的地方,就是我用anconda安装后,其实用jupyter notebook是可以执行的,比如faiss-gpu 版本,
【Python库安装填坑】faiss在Windows上的安装问题---from . import _swigfaiss ImportError: DLL load failed: 找不到指定的模块。_第3张图片

但是在VS Code死活不能执行,提示找不到_swigfaiss模块
【Python库安装填坑】faiss在Windows上的安装问题---from . import _swigfaiss ImportError: DLL load failed: 找不到指定的模块。_第4张图片
目前我还没弄明白什么原因,希望已经解决的朋友说下操作,或者到官方issue留言"import faiss" works in jupyternotebook but doesn’t work in VS Code

【Python库安装填坑】faiss在Windows上的安装问题---from . import _swigfaiss ImportError: DLL load failed: 找不到指定的模块。_第5张图片

补充一 VS code 无法调用 import faiss

出现这这种问题,一般是指VS code无法调用conda虚拟环境安装的各种包,解决这种问题其实很简单,在对应的conda环境prompt界面直接输入"code ."启动VS code即可,如下图所示:
【Python库安装填坑】faiss在Windows上的安装问题---from . import _swigfaiss ImportError: DLL load failed: 找不到指定的模块。_第6张图片
参考:

VS code 虚拟环境问题官方文档

补充二 torch gpu无法调用问题

在调用faiss-gpu 包是如果出现这样的错误,一般是指安装的pytorch-gpu版本配套的cudatoolkit与faiss-gpu配套的cudatoolkit不匹配,比如我的pytorch-gpu 用的是11.1.1版本cudatoolkit,而安装的faiss-gpu配套的cudatoolkit是11.2.2

File “D:\Users\Nandu\AppData\Local\Continuum\anaconda3\envs\pytorch-gpu\lib\site-packages\torch_init_.py”, line 123, in
raise err
OSError: [WinError 127] 找不到指定的程序。 Error loading “D:\Users\Nandu\AppData\Local\Continuum\anaconda3\envs\pytorch-gpu\lib\site-packages\torch\lib\cublas64_11.dll” or one of its dependencies.

因此,在安装faiss-gpu版本的时候要注意对应的cudatoolkit版本,如果缺省的话,会安装最新的cudatoolkit版本,具体操作如下图所示
【Python库安装填坑】faiss在Windows上的安装问题---from . import _swigfaiss ImportError: DLL load failed: 找不到指定的模块。_第7张图片

参考:
1.faiss install.md

你可能感兴趣的:(安装填坑,windows,系统安装,python)