导入'urllib3.util'在Python 2.7中失败了吗?

时间:2014-04-29 09:59:56

标签: python python-2.7

我正在处理由其他人编写的Python脚本。我试图在我的本地开发机器上运行它没有任何问题。

我已经安装了脚本所需的模块(requests,urllib3和oath2),但是我收到了以下错误,我正在努力解决;

Traceback (most recent call last):
  File "/home/saeed/ps4/scrape/run.py", line 2, in <module>
    import get_data as gd, time
  File "/home/saeed/ps4/scrape/get_data.py", line 8, in <module>
    import sys, oauth2, requests, json
  File "/usr/local/lib/python2.7/dist-packages/requests/__init__.py", line 58, in <module>
    from . import utils
  File "/usr/local/lib/python2.7/dist-packages/requests/utils.py", line 25, in <module>
    from .compat import parse_http_list as _parse_list_header
  File "/usr/local/lib/python2.7/dist-packages/requests/compat.py", line 7, in <module>
    from .packages import chardet
  File "/usr/local/lib/python2.7/dist-packages/requests/packages/__init__.py", line 3, in <module>
    from . import urllib3
  File "/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/__init__.py", line 16, in <module>
    from .connectionpool import (
  File "/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/connectionpool.py", line 36, in <module>
    from .connection import (
  File "/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/connection.py", line 43, in <module>
    from .util import (
ImportError: No module named util

脚本由三个文件组成; run.py,get_data.py和incr.py. run.py中的import语句是:

import get_data as gd, time

在get_data.py中:

import sys, oauth2, requests, json

在incr.py中:

import time

我认为我必须安装一个名为'util'的模块。我搜索过这个模块但找不到它,因此我觉得这似乎是一个更深层次的问题,而不仅仅是安装模块。

如果有人能指出我正确的方向来解决问题,我真的很感激。我使用的是Python 2.7.3。

2 个答案:

答案 0 :(得分:15)

安装中断

如果由于某种原因您的urllib3安装未能包含util子模块,您只需从pypi页面下载存档并将util文件夹从那里复制到您的urllib3安装位置。

过时的urllib3

您发布的错误是在urllib3内,util的相对导入失败。

我查看了urllib3网站,很可能你有urllib3的旧版本。

来自更改日志:

  

1.8.2(2014-04-17)

     

修复urllib3.util未包含在包中。

尝试使用

更新模块
sudo pip install urllib3 --upgrade

(或等效于您的机器)

<强>替代

它可能失败的第二个原因是你是否试图从模块中运行代码。这通常被认为是危险的,应该避免。

确认您正在加载哪个模块

通过启动python解释器并检查加载urllib3模块的位置,查看模块的位置;

python -c "import urllib3; print urllib3.__file__"

同样可以查看版本:

python -c "import urllib3; print urllib3.__version__"

手动检查 您还可以检查以确保util子模块位于正确的位置;

ls /usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/util

答案 1 :(得分:0)

使用pip3:pip3 install urllib3 --upgrade