Python3.12导入requests报错:找不到six.moves模块(Python3.8可正常运行)
解决Python 3.12导入requests时出现ModuleNotFoundError: No module named 'six.moves'的问题
问题原因
你遇到的问题是因为系统中安装的urllib3版本过旧,该版本依赖six库实现Python 2与早期Python 3的兼容,但Python 3.12环境未安装six,且新版urllib3已移除对six的依赖。而Python 3.8环境要么预装了six,要么对应的urllib3版本与环境兼容,因此能正常导入requests。
解决方案
方案1:用虚拟环境安装适配Python 3.12的requests版本(推荐)
虚拟环境能隔离系统包冲突,是最稳妥的解决方式:
- 创建并激活虚拟环境:
python3.12 -m venv venv source venv/bin/activate - 安装最新版requests:
最新版requests依赖的urllib3已不再需要pip install requests --upgradesix,可完美适配Python 3.12。
方案2:给Python 3.12安装six(临时 workaround)
若不想使用虚拟环境,可直接为Python 3.12安装six库:
sudo python3.12 -m pip install six
但这只是临时修复,后续可能出现其他兼容性问题,建议优先选择方案1。
方案3:升级系统级urllib3版本
若系统允许,可升级系统中的urllib3:
sudo python3 -m pip install urllib3 --upgrade
注意:此操作可能影响系统中依赖旧版urllib3的其他程序,操作前需谨慎评估风险。
内容的提问来源于stack exchange,提问作者0minutes
相关产品推荐
相关产品推荐

