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

Mr *_*r B 6 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 Code Online (Sandbox Code Playgroud)

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

import get_data as gd, time
Run Code Online (Sandbox Code Playgroud)

在get_data.py中:

import sys, oauth2, requests, json
Run Code Online (Sandbox Code Playgroud)

在incr.py:

import time
Run Code Online (Sandbox Code Playgroud)

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

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

jme*_*etz 15

Broken install

If for some reason your install of urllib3 is failing to include the util submodule, you could simply download the archive from the pypi page and copy the util folder from there to your urllib3 instal location.

Outdated urllib3

The error you've posted is saying that within urllib3 the relative import of util is failing.

I checked the urllib3 website, and most likely you have an old version of urllib3.

From the changelog:

1.8.2 (2014-04-17)

Fix urllib3.util not being included in the package.

Try updating the module with

sudo pip install urllib3 --upgrade
Run Code Online (Sandbox Code Playgroud)

(or equivalent on your machine)

Alternative

A second reason it could be failing is if you're trying to run the code from within the module. This is generally seen as dangerous and should be avoided.

Confirm which module you're loading

See where your module is by starting a python interpreter and checking where the urllib3 module is being loaded from;

python -c "import urllib3; print urllib3.__file__"
Run Code Online (Sandbox Code Playgroud)

similarly you can check the version:

python -c "import urllib3; print urllib3.__version__"
Run Code Online (Sandbox Code Playgroud)

Manual checking You could also check to make sure that the util submodule is present in the correct location;

ls /usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/util
Run Code Online (Sandbox Code Playgroud)