企業内環境でのpythonのpipのためのproxy設定がうまくいかない(例えば、Python 3.7.5ではOKなのに、3.7.6でNG)


何についてか

表題の通り。

どういう人向けの記事か

企業内からだから、pipでproxy設定がいると認識して、
proxyを設定したのに、意外や意外、エラーに出会った人。

具体的には、以下のようなエラー。

ip._vendor.urllib3.exceptions.ProxySchemeUnknown: Not supported proxy scheme
raise ProxySchemeUnknown

以下、無理やり自宅で再現させたエラーなので、
厳密ではないかも。。。

    conn = self.get_connection(request.url, proxies)
  File "C:\Users\XYZZZ\AppData\Local\Programs\Python\Python37\lib\site-packages\pip\_vendor\requests\adapters.py", line 309, in get_connection
    proxy_manager = self.proxy_manager_for(proxy)
  File "C:\Users\XYZZZ\AppData\Local\Programs\Python\Python37\lib\site-packages\pip\_vendor\requests\adapters.py", line 199, in proxy_manager_for
    **proxy_kwargs)
  File "C:\Users\XYZZZ\AppData\Local\Programs\Python\Python37\lib\site-packages\pip\_vendor\urllib3\poolmanager.py", line 470, in proxy_from_url
    return ProxyManager(proxy_url=url, **kw)
  File "C:\Users\XYZZZ\AppData\Local\Programs\Python\Python37\lib\site-packages\pip\_vendor\urllib3\poolmanager.py", line 420, in __init__
    raise ProxySchemeUnknown(proxy.scheme)
pip._vendor.urllib3.exceptions.ProxySchemeUnknown: Not supported proxy scheme httpyy

結論

pythonのマイナーなバージョンの差によって、proxy設定の方法の違いでエラーになることがある。
具体的には、Python 3.7.6でエラーになる。

http:

をつけると解決する。(Python 3.7.5にひとつだけ戻すという手もある。)
ちょっと、ひどいなーと感じる。

以下のgithubに情報がある。
Python 3.7.6: urllib3.exceptions.ProxySchemeUnknown #5297