如何解决Python中Requests与Selenium的urllib3版本冲突问题
解决Requests与Selenium的urllib3版本冲突问题
问题重现
运行以下爬虫代码时:
import requests from bs4 import BeautifulSoup url = 'http://127.0.0.1:3744/' response = requests.get(url) raw_html = response.text parsed_html = BeautifulSoup(raw_html, 'html.parser') print(raw_html)
出现版本冲突错误:
line 57, in <module> raise RuntimeError('Requests dependency \'urllib3\' must be version >= 1.21.1, < 1.22!') RuntimeError: Requests dependency 'urllib3' must be version >= 1.21.1, < 1.22!
核心矛盾:
- requests 2.16.0 要求 urllib3 版本范围是
>=1.21.1, <1.22 - selenium 4.9.1 要求 urllib3[socks] 版本范围是
>=1.26, <3
可行解决方案
1. 更新Requests到兼容高版本urllib3的版本
旧版requests(2.16.0)版本过旧,新版本requests已放宽urllib3的版本限制。执行以下命令更新requests:
pip install --upgrade requests
更新后,requests会自动适配满足selenium要求的urllib3版本(如1.26.x或2.x),同时保证自身兼容性。
2. 使用虚拟环境隔离依赖
如果需要保留不同版本的依赖环境,可通过虚拟环境分别管理:
- 创建爬虫专属虚拟环境:
# 创建环境 python -m venv crawler_env # Windows激活 crawler_env\Scripts\activate # Linux/macOS激活 source crawler_env/bin/activate # 安装对应依赖 pip install requests==2.16.0 urllib3==1.21.1 beautifulsoup4 - 创建selenium专属虚拟环境:
python -m venv selenium_env # 激活环境(同上) pip install selenium urllib3>=1.26
3. 安装兼容双方的中间版本(谨慎使用)
查找同时满足两者兼容要求的版本组合,比如requests 2.26.0支持urllib3 1.26.x,执行:
pip install requests==2.26.0 urllib3==1.26.0
此方法需测试兼容性,避免潜在的功能异常。
内容的提问来源于stack exchange,提问作者Adryan Taborda
相关产品推荐
相关产品推荐

