我在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。会是什么原因呢?
7条答案
按热度按时间oalqel3c1#
如果您已经从默认版本安装了'requests',则可能必须
sudo pip install --upgrade requests
感谢@bkzland对之前答案的评论:
我按照这些步骤有同样的错误,我需要使用sudo pip安装--升级每次使它工作。- bkzland Dec 17 '15在12:57
---现在,我如何在我的www.example.com中将此设置为依赖项setup.py?
eit6fx6z2#
标准
urllib
和urllib2
与第三方urllib3
之间存在差异。看起来twill没有安装依赖项,所以你必须自己安装。Twill依赖于
requests
库,该库附带并在幕后使用urllib3
。您还需要lxml
和cssselect
库。您可以在终端上安装它们,如下所示:
pip install requests
pip install lxml
和
pip install cssselect
fafcakar3#
python3
7z5jn7bk4#
如果你有一个基于RHEL的味道,那么:
yum install -y python-requests
基于Debian/Ubuntu的风格:
apt-get install -y python-requests
基于Arch Linux的风格:
pacman -S python-requests
kkbh8khc5#
问题解决人:
au9on6nz6#
应该指出的是,如果你犯了我犯过的新手错误,用“旧”的python命令运行python 3脚本,也会出现这个错误。运行脚本
不
r7xajy2e7#
这里的问题是通过子依赖隐式地依赖于某个东西。这种风格相当于引用一个类的dunder-methods,因为依赖项自己的依赖项可能会改变(例如,如果
requests
停止使用/暴露urllib3
)。您可以通过显式地使用依赖项来避免此问题,并将它们(即
urllib3
)表示为requirements.txt
/pyproject.toml
文件中的依赖项。