16

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

4

6 回答 6

24

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

sudo pip install --upgrade requests

从对先前答案的评论中感谢@bkzland:

我按照这些步骤操作时遇到了同样的错误,我需要每次都使用 sudo pip install --upgrade 才能使其正常工作。– bkzland 2015 年 12 月 17 日在 12:57

---现在,如何在我的 setup.py 中使其成为依赖项?

于 2016-07-28T15:22:34.007 回答
17

urllib标准和urllib2第三方有区别urllib3

看起来 twill 没有安装依赖项,所以你必须自己做。斜纹依赖于幕后requests附带和使用的库。urllib3您还需要lxmlcssselect库。

您可以将它们安装在终端上,如下所示:

pip install requests

pip install lxml

pip install cssselect

于 2014-12-12T09:30:35.777 回答
5

如果您有基于 RHEL 的风味,那么:

yum install -y python-requests

基于 Debian/Ubuntu 的风格:

apt-get install -y python-requests

基于 Arch Linux 的风格:

pacman -S python-requests

于 2016-09-16T14:00:11.733 回答
2

问题解决:

pip install --upgrade urllib3==1.19.1
pip install --upgrade requests
于 2019-01-02T09:01:42.670 回答
2

蟒蛇3

#note that requests.packages.urllib3 is just an alias for urllib3
from urllib3 import disable_warnings
from urllib3.exceptions import InsecureRequestWarning
disable_warnings(InsecureRequestWarning)
于 2019-04-04T03:18:56.600 回答
0

应该指出的是,如果你犯了我做的菜鸟错误,你也可以得到这个错误,使用“旧”python 命令运行 python 3 脚本,即运行脚本为

python3 <script>.py

不是

python <script>.py
于 2021-04-09T16:50:51.340 回答