2014-04-29 139 views
6

我正在编写由其他人编写的Python脚本。我试图让它在本地开发机器上运行时没有任何问题。在Python 2.7中导入'urllib3.util'失败?

我已经安装了脚本所需的模块(请求,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。

+0

有一个在urllib3封装模块'util.py',是的。 – wim

+0

如果您在交互式解释器中执行“导入urllib3.util”,会发生什么情况? – wim

+0

我认为命名空间不正确。在你使用导入的地方显示一些代码。 – fledgling

回答

14

残破安装

如果由于某种原因,你的安装urllib3的原因是没有包括util子模块,你可以简单地从PyPI将页面下载档案,并从那里复制UTIL文件夹到您urllib3 INSTAL位置。

过时urllib3

你张贴的错误是说,内urllib3util相对进口失败。

我查了urllib3网站,很可能你有一个老版本的urllib3

从更新日志:

1.8.2 (2014-04-17)

Fix urllib3.util not being included in the package.

尝试更新模块

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 
+0

我刚刚检查了我安装的版本urllib3,它是1.8.2,但我仍然收到错误:S – Sid

+0

@Sid:奇怪;你发布的错误肯定是在urllib3中缺少**相对导入** ...也许尝试重新安装'urllib3'? – jmetz

+0

我试过升级但仍然收到相同的错误。感谢您一直以来的帮助。 – Sid