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

问题描述 投票:13回答:5

我在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就好了。可能是什么原因?

python urllib2 urllib3 twill
5个回答
15
投票

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

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

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

pip install requests

pip install lxml

pip install cssselect


22
投票

如果您已经从默认构建安装了“请求”,则可能必须这样做

sudo pip install --upgrade requests

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

我按照这些步骤进行了相同的错误,我需要每次使用sudo pip install --upgrade才能使其正常工作。 - bkzland 2015年12月17日12:57

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


5
投票

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

yum install -y python-requests

Debian / Ubuntu基于风味:

apt-get install -y python-requests

基于Arch Linux的风味:

pacman -S python-requests


0
投票

问题决定于:

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

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)
© www.soinside.com 2019 - 2024. All rights reserved.