UbuntuマシンでPython 2.7.6を実行しています。twill-sh
(TwillはWebサイトのテストに使用されるブラウザです)ターミナルで、次のものを取得しています:
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
ただし、urllibをPython consoleで問題なくインポートできます。理由は何ですか?
標準のurllib
とurllib2
とサードパーティのurllib3
には違いがあります。
Twillは依存関係をインストールしないため、自分で行う必要があります。 Twillは、舞台裏でurllib3
に付属し使用するrequests
ライブラリに依存しています。 lxml
およびcssselect
ライブラリも必要です。
次のように端末にインストールできます。
pip install requests
pip install lxml
そして
pip install cssselect
既にデフォルトビルドから「リクエスト」がインストールされている場合、
Sudo pip install --upgrade requests
前の回答のコメントから@bkzlandにクレジット:
同じエラーが発生するこれらの手順に従いました。Sudopip install --upgradeを使用して動作させる必要がありました。 – bkzland 15年12月17日12:57に
---では、setup.pyでこれを依存関係にするにはどうすればよいですか?
RHELベースのフレーバーを使用している場合:
yum install -y python-requests
Debian/Ubuntuベースのフレーバー:
apt-get install -y python-requests
Arch Linuxベースのフレーバー:
pacman -S python-requests
python
#note that requests.packages.urllib3 is just an alias for urllib3
from urllib3 import disable_warnings
from urllib3.exceptions import InsecureRequestWarning
disable_warnings(InsecureRequestWarning)
決定した問題:
pip install --upgrade urllib3==1.19.1
pip install --upgrade requests