Conda环境中使用pip安装requirements.txt依赖包耗时过长的问题求助
我正在conda环境中尝试安装requirements.txt内的依赖包,文件内容如下:
amazon-braket-pennylane-plugin==1.1.0.post1 cvxopt==1.2.6 cvxpy==1.1.11 dill==0.3.3 ipywidgets==7.6.3 jupyter==1.0.0 jupytext==1.10.2 matplotlib==3.3.4 Mosek==9.2.40 notebook==6.2.0 numpy==1.19.5 pandas==1.2.2 pytest==6.2.2 scikit-learn==0.24.1 scipy==1.6.0 seaborn==0.11.1 sklearn==0.0 sympy==1.7.1 tqdm==4.57.0 widgetsnbextension==3.5.1 pennylane==0.16.0 pennylane-cirq==0.14.0 keras==2.4.3 tensorflow==2.4.1 rsmf==0.2
我使用的安装命令是:
pip install -r src/requirements.txt --upgrade
但安装过程已经持续了好几个小时,始终无法完成。从日志能看到,pip一直在反复下载不同版本的依赖包(比如pydantic、pyquil、google-api-core等),不断尝试寻找兼容的版本组合,日志里频繁出现这类提示:
INFO: pip is looking at multiple versions of pydantic to determine which version is compatible with other requirements. This could take a while.
我不清楚为什么会出现这种情况,有没有办法能让这些依赖包正常安装完成?
给你几个实用的解决思路,我之前处理过类似的依赖解析卡顿问题:
1. 切换回pip旧版依赖解析器
pip在20.3版本后启用了新的依赖解析逻辑,虽然更严谨但面对复杂依赖组合时会慢很多。你可以试试用旧版解析器,这通常能大幅缩短时间:
pip install -r src/requirements.txt --upgrade --use-deprecated=legacy-resolver
2. 先用conda搞定核心大依赖
既然你在conda环境里,别全靠pip。先把numpy、pandas、tensorflow这些大型依赖用conda安装好——conda的依赖处理在这类场景下更高效,剩下的小依赖再交给pip:
# 先安装conda支持的核心包(版本和你的requirements对齐) conda install numpy=1.19.5 pandas=1.2.2 scikit-learn=0.24.1 matplotlib=3.3.4 tensorflow=2.4.1 keras=2.4.3 # 再安装剩余依赖 pip install -r src/requirements.txt --upgrade
3. 去掉--upgrade参数试试
你加了--upgrade会让pip强制检查所有包的最新版本,这会让依赖解析的工作量暴增。如果是新环境,完全不需要升级操作,直接去掉这个参数:
pip install -r src/requirements.txt
4. 建个干净的新环境试试
如果当前conda环境里已经有一些残留的包,可能会和新安装的依赖产生隐性冲突,导致pip反复尝试版本。不如直接建个全新环境:
conda create -n qhack_env python=3.8 conda activate qhack_env pip install -r src/requirements.txt --upgrade
5. 手动补充依赖约束
从日志看,pip一直在反复尝试pydantic、pyquil这类包的不同版本,说明这些包的子依赖没有明确约束。你可以在requirements.txt里手动添加一些关键子依赖的固定版本,帮pip减少试探的次数。
备注:内容来源于stack exchange,提问作者sarika




