LoginSignup
21
21

More than 5 years have passed since last update.

python3 urllibプロキシ設定

Last updated at Posted at 2017-01-18

概要

オライリーから出てる「ゼロから作るDeep Learning1.途中,MNISTの手書き文字ファイルをpythonを使ってダウンロードするのだが,うまく動いてくれない.次のようなエラーが出る2

TimeoutError: [WinError 10060] 接続済みの呼び出し先が一定の時間を過ぎても正しく
応答しなかったため、接続できませんでした。または接続済みのホストが応答しなかった
ため、確立された接続は失敗しました。

多分,プロキシのせい.

mnist.py3の中身を見るとurllibを使ってるので,多分,これにちゃんとプロキシを設定してやれば,解決できるはず.

ということで,urllibにどうやってプロキシを設定するのか調べた4

なお,ディープラーニングの本を読んでて本質的でないとこで引っかかっただけで,この記事ではディープラーニングに関する情報は一切書いていない.

やり方

まぁ,こういうのは大体,誰かが既にやっているもので,Stack Overflowでみつけることができた.
urllib.request.urlretrieve with proxy?

proxy = urllib.request.ProxyHandler({'http': '127.0.0.1'})
opener = urllib.request.build_opener(proxy)
urllib.request.install_opener(opener)
urllib.request.urlretrieve('http://www.google.com')

当然ながら,ProxyHandlerのアドレスは,使うプロキシに合わせて変更する必要がある.
ユーザ認証が必要な方は別にやり方があるっぽいけど,今回はいらないやつだったのでコレ.

具体例

この本の場合,プロキシサーバがhttp://proxy.sample.com:8080なら,mnist.pyのsave_fileの定義の直後に以下のようなスクリプトを追加.正常にダウンロードできた.

proxy = urllib.request.ProxyHandler({'http': 'http://proxy.sample.com:8080'})
opener = urllib.request.build_opener(proxy)
urllib.request.install_opener(opener)


  1. python3系のAnacondaディストリビューションを使っている. 

  2. Windows環境. 

  3. 使うファイルはすべて,GitHubで公開されている. 

  4. pythonはこないだから使い始めたばかりなので,まだまだ初心者.注釈の入れ方もさっき覚えたので無駄に使ってみたくなる. 

21
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
21