GoogleV3 の現在の実装では、ユーザー変数とパスワード変数を直接 urllib2.opener に渡すことはできません (GoogleV3 は裏で urllib2 を使用します)。
urllib2.opener を呼び出す方法の例を次に示します。
proxy_handler = urllib2.ProxyHandler({'http': 'http://www.example.com:3128/'})
proxy_auth_handler = urllib2.ProxyBasicAuthHandler()
proxy_auth_handler.add_password('realm', 'host', 'username', 'password')
opener = urllib2.build_opener(proxy_handler, proxy_auth_handler)
# This time, rather than install the OpenerDirector, we use it directly:
opener.open('http://www.example.com/login.html')
残念ながら、現在の GoogleV3 実装では urllib2.ProxyBasicAuthHandler を使用していません。
したがって、ソースを変更して拡張する必要があります: https://github.com/geopy/geopy/blob/master/geopy/geocoders/base.py
上部に以下を追加します:
urlparse から urlparse をインポート
次に、「if self.proxies is None:」コードを見つけて、次のように置き換えます。
if self.proxies is None:
self.urlopen = urllib_urlopen
else:
params = urlparse(proxies[1])
host = params.get('hostname')
username = params.get('username')
password = params.get('password')
if host and username and password:
proxy_auth_handler = urllib2.ProxyBasicAuthHandler()
proxy_auth_handler.add_password(None, host, username, password)
self.urlopen = build_opener(
ProxyHandler(self.proxies, proxy_auth_handler),
)