VSCode中venv环境requests请求报错,全局Python正常的问题排查
虚拟环境venv中requests请求报错的排查与解决方法
1. 彻底清理并重装虚拟环境中的requests依赖
虽然你已经重装过requests,但可能残留了损坏文件或依赖冲突:
- 激活虚拟环境后,执行
pip uninstall -y requests彻底卸载 - 手动删除虚拟环境目录下
lib/pythonX.X/site-packages中的requests文件夹和requests-*.dist-info文件夹(X.X对应你的Python版本) - 重新安装requests:
pip install requests - 对比全局环境的
requests和urllib3版本,若不一致则指定版本安装,比如pip install urllib3==1.26.15(替换为全局环境的版本号)
2. 修复VSCode的虚拟环境解释器配置
VSCode可能缓存了旧的解释器路径或未正确识别venv:
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(Mac),输入Python: Select Interpreter,重新选择虚拟环境内的Python解释器(路径类似./venv/Scripts/python.exe或./venv/bin/python) - 若仍有问题,删除项目根目录下的
.vscode文件夹(提前备份settings.json),重启VSCode后重新配置解释器
3. 排查虚拟环境的SSL证书问题
全局环境可能使用系统SSL证书,而venv内的certifi包异常:
- 升级certifi:
pip install --upgrade certifi - 在代码中指定certifi的证书路径测试:
import requests import certifi response = requests.get("https://example.com", verify=certifi.where()) print(response.status_code) - 执行
pip show certifi查看证书文件路径,确认该路径下的cacert.pem文件存在且完整
4. 检查虚拟环境的网络代理设置
虚拟环境可能未继承全局代理配置,或者存在冲突:
- 若全局使用代理,在代码中手动配置代理测试:
import requests proxies = { "http": "http://your-proxy-address:port", "https": "https://your-proxy-address:port" } response = requests.get("https://example.com", proxies=proxies) - 检查虚拟环境的pip配置文件:Windows下删除
venv/Scripts/pip.ini,Linux/Mac下删除venv/bin/pip.conf,避免代理配置冲突
5. 修复虚拟环境的文件权限问题
venv文件夹权限不足可能导致requests无法读取依赖文件:
- Windows:右键venv文件夹 → 属性 → 安全 → 给当前用户添加「完全控制」权限
- Linux/Mac:执行
chmod -R 755 ./venv赋予读写执行权限
内容的提问来源于stack exchange,提问作者ahhu
相关产品推荐
相关产品推荐

