当我执行一个脚本时,报错:

    import faiss
ModuleNotFoundError: No module named 'faiss'

遂:pip install faiss autofaiss -i https://pypi.tuna.tsinghua.edu.cn/simple

再次执行脚本,报错:

    import faiss
  File "/Users/sunzhuo02/anaconda3/envs/torch_py37/lib/python3.7/site-packages/faiss/__init__.py", line 19, in <module>
    from .swigfaiss import *
  File "/Users/sunzhuo02/anaconda3/envs/torch_py37/lib/python3.7/site-packages/faiss/swigfaiss.py", line 98, in <module>
    class FloatVector(_object):
  File "/Users/sunzhuo02/anaconda3/envs/torch_py37/lib/python3.7/site-packages/faiss/swigfaiss.py", line 132, in FloatVector
    __swig_destroy__ = _swigfaiss.delete_FloatVector
AttributeError: module 'faiss._swigfaiss' has no attribute 'delete_FloatVector'

???

检查后发现:

pip list | grep faiss
autofaiss         2.12.0
faiss             1.5.3
faiss-cpu         1.7.2

此时想到了 和另一个可用的conda环境对比一下:

pip list | grep fais
autofaiss                          2.10.2
faiss-cpu                          1.7.2

遂执行:

  • pip uninstall faiss autofaiss
  • pip list | grep fais
  • faiss-cpu         1.7.2
  • pip install autofaiss==2.10.2

此时:

pip list | grep fais
autofaiss         2.10.2
faiss-cpu         1.7.2

再次执行脚本,报错:

File "/Users/sunzhuo02/anaconda3/envs/torch_py37/lib/python3.7/site-packages/autofaiss/__init__.py", line 3, in <module>
    from autofaiss.external.quantize import build_index, score_index, tune_index
  File "/Users/sunzhuo02/anaconda3/envs/torch_py37/lib/python3.7/site-packages/autofaiss/external/quantize.py", line 17, in <module>
    from autofaiss.external.build import (
  File "/Users/sunzhuo02/anaconda3/envs/torch_py37/lib/python3.7/site-packages/autofaiss/external/build.py", line 8, in <module>
    from faiss import extract_index_ivf
ImportError: cannot import name 'extract_index_ivf' from 'faiss' (unknown location)

啊噗,好歹错误是变了。。。

怀疑是前后安装顺序问题

与是:

  • pip uninstall faiss-cpu 
  • pip install faiss-cpu

再次执行脚本,,执行成功。。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐