如何修复ImportError:没有名为packages.urllib3的模块?

时间:2014-12-12 08:59:58

标签: python urllib2 urllib3 twill

我在Ubuntu机器上运行Python 2.7.6。当我在终端中运行twill-sh(Twill是用于测试网站的浏览器)时,我得到以下内容:

Traceback (most recent call last):
  File "dep.py", line 2, in <module>
    import twill.commands
  File "/usr/local/lib/python2.7/dist-packages/twill/__init__.py", line 52, in <module>
    from shell import TwillCommandLoop
  File "/usr/local/lib/python2.7/dist-packages/twill/shell.py", line 9, in <module>
    from twill import commands, parse, __version__
  File "/usr/local/lib/python2.7/dist-packages/twill/commands.py", line 75, in <module>
    browser = TwillBrowser()
  File "/usr/local/lib/python2.7/dist-packages/twill/browser.py", line 31, in __init__
    from requests.packages.urllib3 import connectionpool as cpl
ImportError: No module named packages.urllib3

但是,我可以在Python控制台中导入urllib就好了。可能是什么原因?

6 个答案:

答案 0 :(得分:22)

如果您已经从默认版本安装了“请求”,则可能需要

sudo pip install --upgrade requests

从@bkzland对先前回答的评论表示感谢:

  

我按照这些步骤有相同的错误,我需要使用sudo pip   每次安装--upgrade使它工作。 - bkzland 2015年12月17日   12时57

---现在,如何在setup.py中将其作为依赖项?

答案 1 :(得分:15)

标准urlliburllib2以及第三方urllib3之间存在差异。

看起来twill不会安装依赖项,因此您必须自己完成。斜纹取决于附带的requests库,并在幕后使用urllib3。您还需要lxmlcssselect个库。

您可以按如下方式在终端上安装它们:

pip install requests

pip install lxml

pip install cssselect

答案 2 :(得分:5)

如果你有基于RHEL的味道,那么:

Optional

基于Debian / Ubuntu的风味:

yum install -y python-requests

Arch Linux based flavor:

apt-get install -y python-requests

答案 3 :(得分:0)

问题由以下因素决定:

pip install --upgrade urllib3==1.19.1
pip install --upgrade requests

答案 4 :(得分:0)

python3

#note that requests.packages.urllib3 is just an alias for urllib3
from urllib3 import disable_warnings
from urllib3.exceptions import InsecureRequestWarning
disable_warnings(InsecureRequestWarning)

答案 5 :(得分:0)

应该指出的是,如果您犯了我犯的菜鸟错误,使用“旧”python命令运行python 3脚本,即运行脚本为

python3 <script>.py

不是

python <script>.py