WSL2 Ubuntu20.04导入clip_retrieval时Flask与HTTPAdapter导入错误
导入clip_retrieval时的Flask与HTTPAdapter导入错误(WSL2 Ubuntu 20.04环境)
问题情况
在Windows 10的WSL2 Ubuntu 20.04环境中导入clip_retrieval时出现两个导入错误:
- 无法从flask导入Flask
- 无法从requests.adapters导入HTTPAdapter
已确认所有依赖版本符合要求,尝试重装flask、requests,未使用虚拟环境。Windows原生环境中手动导入Flask和HTTPAdapter正常;此前Windows环境因BLAS和OpenMP缺失导致faiss相关错误,转用WSL。后续Windows用Anaconda安装解决该导入问题,但存在其他待解决错误。
错误日志
[GCC 9.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import clip_retrieval Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/local/lib/python3.8/dist-packages/clip_retrieval/__init__.py", line 3, in <module> from .clip_back import clip_back File "/usr/local/lib/python3.8/dist-packages/clip_retrieval/clip_back.py", line 5, in <module> from flask import Flask, request, make_response ImportError: cannot import name 'Flask' from 'flask' (/home/tosh/.local/lib/python3.8/site-packages/flask/__init__.py) Error in sys.excepthook: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 72, in apport_excepthook from apport.fileutils import likely_packaged, get_recent_crashes File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module> from apport.report import Report File "/usr/lib/python3/dist-packages/apport/report.py", line 32, in <module> import apport.fileutils File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 12, in <module> import os, glob, subprocess, os.path, time, pwd, sys, requests_unixsocket File "/usr/lib/python3/dist-packages/requests_unixsocket/__init__.py", line 4, in <module> from .adapters import UnixAdapter File "/usr/lib/python3/dist-packages/requests_unixsocket/adapters.py", line 3, in <module> from requests.adapters import HTTPAdapter ImportError: cannot import name 'HTTPAdapter' from 'requests.adapters' (/home/tosh/.local/lib/python3.8/site-packages/requests/adapters.py) Original exception was: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/local/lib/python3.8/dist-packages/clip_retrieval/__init__.py", line 3, in <module> from .clip_back import clip_back File "/usr/local/lib/python3.8/dist-packages/clip_retrieval/clip_back.py", line 5, in <module> from flask import Flask, request, make_response ImportError: cannot import name 'Flask' from 'flask' (/home/tosh/.local/lib/python3.8/site-packages/flask/__init__.py) >>>
已安装依赖列表
pip3 list Package Version ------------------------ -------------------- aiohttp 3.8.3 aiosignal 1.2.0 albumentations 1.3.0 aniso8601 9.0.1 async-timeout 4.0.2 attrs 19.3.0 autofaiss 2.15.3 Automat 0.8.0 blinker 1.4 braceexpand 0.1.7 certifi 2019.11.28 chardet 3.0.4 charset-normalizer 2.1.1 click 8.1.3 clip-anytorch 2.5.0 clip-retrieval 2.35.1 cloud-init 22.3.4 colorama 0.4.3 command-not-found 0.3 configobj 5.0.6 constantly 15.1.0 cryptography 2.8 cupshelpers 1.0 cycler 0.11.0 dataclasses 0.6 dbus-python 1.2.16 defer 1.0.6 Distance 0.1.3 distro 1.4.0 distro-info 0.23ubuntu1 docker-pycreds 0.4.0 embedding-reader 1.5.0 entrypoints 0.3 ExifRead-nocycle 3.0.1 faiss-cpu 1.7.2 filelock 3.8.0 fire 0.4.0 Flask 2.2.2 Flask-Cors 3.0.10 Flask-RESTful 0.3.9 fonttools 4.28.5 frozenlist 1.3.1 fsspec 2022.1.0 ftfy 6.1.1 gitdb 4.0.9 GitPython 3.1.29 h5py 3.7.0 httplib2 0.14.0 huggingface-hub 0.10.1 hyperlink 19.0.0 idna 2.8 imageio 2.22.4 img2dataset 1.33.0 importlib-metadata 5.0.0 incremental 16.10.1 itsdangerous 2.1.2 Jinja2 3.1.2 joblib 1.2.0 jsonpatch 1.22 jsonpointer 2.0 jsonschema 3.2.0 keyring 18.0.1 kiwisolver 1.3.2 language-selector 0.1 launchpadlib 1.10.13 lazr.restfulclient 0.14.2 lazr.uri 1.0.3 macaroonbakery 1.3.1 MarkupSafe 2.1.1 matplotlib 3.5.1 more-itertools 4.2.0 multidict 6.0.2 multilingual-clip 1.0.10 netifaces 0.10.4 networkx 2.8.8 nltk 3.7 numpy 1.22.0 nvidia-cublas-cu11 11.10.3.66 nvidia-cuda-nvrtc-cu11 11.7.99 nvidia-cuda-runtime-cu11 11.7.99 nvidia-cudnn-cu11 8.5.0.96 oauthlib 3.1.0 onnx 1.11.0 open-clip-torch 2.3.1 opencv-python 4.6.0.66 opencv-python-headless 4.6.0.66 packaging 21.3 pandas 1.5.1 pathtools 0.1.2 pexpect 4.6.0 Pillow 9.0.0 pip 20.0.2 prometheus-client 0.15.0 promise 2.3 protobuf 3.19.4 psutil 5.5.1 pyarrow 7.0.0 pyasn1 0.4.2 pyasn1-modules 0.2.1 pybind11 2.9.1 pycairo 1.16.2 pycups 1.9.73 PyGObject 3.36.0 PyHamcrest 1.9.0 PyJWT 1.7.1 pymacaroons 0.13.0 PyNaCl 1.3.0 pyOpenSSL 19.0.0 pyparsing 3.0.6 pyRFC3339 1.1 pyrsistent 0.15.5 pyserial 3.4 python-apt 2.0.0+ubuntu0.20.4.8 python-dateutil 2.8.2 python-debian 0.1.36ubuntu1 pytz 2022.6 PyWavelets 1.4.1 PyYAML 5.3.1 qudida 0.0.4 regex 2022.10.31 requests 2.28.1 requests-unixsocket 0.2.0 scikit-image 0.19.3 scikit-learn 1.1.3 scipy 1.9.3 SecretStorage 2.3.1 sentence-transformers 2.2.2 sentencepiece 0.1.97 sentry-sdk 1.10.1 service-identity 18.1.0 setproctitle 1.3.2 setuptools 60.9.3 shortuuid 1.0.9 simplejson 3.16.0 six 1.14.0 smmap 5.0.0 sos 4.4 ssh-import-id 5.10 systemd-python 234 termcolor 2.1.0 threadpoolctl 3.1.0 tifffile 2022.10.10 tokenizers 0.13.2 torch 1.13.0 torchvision 0.14.0 tqdm 4.64.1 transformers 4.24.0 Twisted 18.9.0 typing-extensions 4.1.1 ubuntu-advantage-tools 27.11.3 ufw 0.36 unattended-upgrades 0.1 urllib3 1.26.11 wadllib 1.3.3 wandb 0.12.21 wcwidth 0.2.5 webdataset 0.1.103 Werkzeug 2.2.2 wheel 0.34.2 yarl 1.8.1 zipp 1.0.0 zope.interface 4.7.1
clip_retrieval依赖要求
img2dataset>=1.25.5,<2 clip-anytorch>=2.5.0,<3 tqdm>=4.62.3,<5 fire>=0.4.0,<0.5.0 torch>=1.7.1,<2 torchvision>=0.10.1,<2 numpy>=1.19.5,<2 faiss-cpu>=1.7.2,<2 flask>=2.0.3,<3 flask_restful>=0.3.9,<1 flask_cors>=3.0.10,<4 pandas>=1.1.5,<2 pyarrow>=6.0.1,<8 autofaiss>=2.9.6,<3 webdataset>=0.1.103,<0.2 h5py>=3.1.0,<4 prometheus-client>=0.13.1,<1 fsspec==2022.1.0 sentence-transformers>=2.2.0,<3 wandb>=0.12.10,<0.13 open-clip-torch>=2.0.0,<3.0.0 requests>=2.27.1,<3 aiohttp>=3.8.1,<4 multilingual-clip>=1.0.10,<2
解决步骤
1. 清理用户站点包冲突
错误日志显示Python优先加载了/home/tosh/.local/lib/python3.8/site-packages下的flask和requests,而非系统的/usr/local/lib/python3.8/dist-packages,这是典型的依赖路径冲突问题。执行以下命令清理用户目录下的相关包:
pip3 uninstall -y flask requests rm -rf /home/tosh/.local/lib/python3.8/site-packages/flask* rm -rf /home/tosh/.local/lib/python3.8/site-packages/requests*
2. 重新安装指定版本依赖
按照clip_retrieval的依赖要求,重新安装符合版本范围的包:
pip3 install "flask>=2.0.3,<3" "requests>=2.27.1,<3"
3. 验证导入
进入Python交互环境验证基础导入是否正常:
from flask import Flask from requests.adapters import HTTPAdapter
若无报错,再尝试导入clip_retrieval。
4. 可选:使用虚拟环境隔离依赖
为避免系统包与用户包的版本冲突,建议创建虚拟环境来安装clip_retrieval:
python3 -m venv clip_env source clip_env/bin/activate pip install clip-retrieval
内容的提问来源于stack exchange,提问作者Twenkid
相关产品推荐
相关产品推荐

