Python中import requests出错,搜了很多方法没解决,求教

requests 依赖的库都已经安装了.

Requirement not upgraded as not directly required: chardet<3.1.0,>=3.0.2 in d:\p
ython27\lib\site-packages (from requests) (3.0.4)
Requirement not upgraded as not directly required: certifi>=2017.4.17 in d:\pyth
on27\lib\site-packages (from requests) (2018.4.16)
Requirement not upgraded as not directly required: urllib3<1.23,>=1.21.1 in d:\p
ython27\lib\site-packages (from requests) (1.22)
Requirement not upgraded as not directly required: idna<2.7,>=2.5 in d:\python27
\lib\site-packages (from requests) (2.5)
pip install requests -U

提示

Successfully installed requests-2.18.4

pip 版本

pip 10.0.1 from d:\python27\lib\site-packages\pip (python 2.7)

然后我在 python 执行 import requests 报错:

>>> import requests
D:\Python27\lib\site-packages\requests\__init__.py:80: RequestsDependencyWarning
: urllib3 (1.9.1) or chardet (3.0.4) doesn't match a supported version!
  RequestsDependencyWarning)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "D:\Python27\lib\site-packages\requests\__init__.py", line 90, in <module
>
    from urllib3.exceptions import DependencyWarning
ImportError: cannot import name DependencyWarning

Python中import requests出错,搜了很多方法没解决,求教

11 回复

是不是用了 TUNA 的 index,最近他们家的好像有问题。我之前用 TUNA 的镜像遇到 urllib3 的问题,换阿里云的好了。


遇到 import requests 出错,别慌,这通常是环境配置问题。直接上解决方案。

1. 首先,确保已安装requests库 打开终端或命令提示符,执行:

pip install requests

如果已安装但版本有问题,可以强制重装:

pip install --force-reinstall requests

2. 如果提示“pip不是内部命令” 说明Python没添加到系统PATH。去Python官网重新下载安装包,安装时务必勾选“Add Python to PATH”。

3. 检查Python环境 确认你用的Python版本和安装requests的版本匹配。有时候电脑上有多个Python环境(比如系统自带一个,Anaconda一个,自己又装一个),requests可能装错地方了。 在终端里运行:

python -c "import sys; print(sys.executable)"

这会显示当前Python解释器的路径。然后用这个路径对应的pip安装:

/path/to/your/python -m pip install requests

4. 网络问题导致安装失败 如果pip install卡住或报网络错误,试试国内镜像源:

pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple

5. 如果还是报错,贴出具体的错误信息 把完整的错误信息贴出来(不要只截图),常见的错误有:

  • ModuleNotFoundError: No module named 'requests' → 没安装或装错环境
  • 各种SSL错误 → 网络代理问题
  • 权限错误 → 在命令前加 sudo(Mac/Linux)或用管理员权限运行CMD(Windows)

一句话总结:先确认pip能正常工作,然后在正确的Python环境下重装requests。

没用.我删除了 4 个依赖库+requests 库.再使用阿里云的源重装也一样.

所以为什么要用 virtualenv

试着执行下 from urllib3.exceptions import DependencyWarning
然后试下能否 import 其他库, 比如一些内建库, 然后装个其他库试试是否是普遍问题
然后检查下当前 path: import sys; print(sys.path)
以前遇到不能 import 基本都是路径问题

文件夹里面可能有 http.py net.py 之类的文件?


<br>from urllib3.exceptions import DependencyWarning<br>
<br>Traceback (most recent call last):<br> File "&lt;stdin&gt;", line 1, in &lt;module&gt;<br>ImportError: cannot import name DependencyWarning<br>
<br>import sys,json,urllib3,MySQLdb<br>
都没有错误.

<br>import sys; print(sys.path) <br>
返回
<br>['', 'C:\\Windows\\system32\\python27.zip', 'D:\\Python27\\DLLs', 'D:\\Python27\<br>\lib', 'D:\\Python27\\lib\\plat-win', 'D:\\Python27\\lib\\lib-tk', 'D:\\Python27<br>', 'D:\\Python27\\lib\\site-packages']<br>

Requirement not upgraded as not directly required: urllib3<1.23,>=1.21.1 in d:\p
ython27\lib\site-packages (from requests) (1.22)

首先 requests 里面要求 urllib3 要符合这个条件<1.23,>=1.21.1



D:\Python27\lib\site-packages\requests<a target="_blank" href=“http://init.py:80” rel=“nofollow noopener”>init.py:80: RequestsDependencyWarning
: urllib3 (1.9.1) or chardet (3.0.4) doesn’t match a supported version!
你的报错信息是这个。证明安装的 urllib3 是 1.9.1 版本。

所以出错啊。

解决方法:
1 用官方源重装试试。先 pip uninstall requests urllib3

2 手动升级 urllib3

3 试下用 virtualenv / pipenv / pyenv 隔离 py 环境


其实这个问题主要的发生场景是 有一个 package 依赖于 urllib3 较早版本,然后你再安装 requests 的时候会导致依赖冲突,就只有一个 package 可以用了。

感谢,已经解决了.

问题的原因在于 D:\Python27\Lib 下有个 urllib3 文件夹 里面是 1.9 的版本.
新版 urllib3-1.22 在 D:\Python27\Lib\site-packages 下
可能是 requests 在搜索依赖包 urllib3 时,优先找到了 Lib 下的.
我删除 1.9 的版本 ,就修复了.

回到顶部