我在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就好了。可能是什么原因?
答案 0 :(得分:22)
如果您已经从默认版本安装了“请求”,则可能需要
sudo pip install --upgrade requests
从@bkzland对先前回答的评论表示感谢:
我按照这些步骤有相同的错误,我需要使用sudo pip 每次安装--upgrade使它工作。 - bkzland 2015年12月17日 12时57
---现在,如何在setup.py中将其作为依赖项?
答案 1 :(得分:15)
标准urllib
和urllib2
以及第三方urllib3
之间存在差异。
看起来twill不会安装依赖项,因此您必须自己完成。斜纹取决于附带的requests
库,并在幕后使用urllib3
。您还需要lxml
和cssselect
个库。
您可以按如下方式在终端上安装它们:
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