LoginSignup
2
1

More than 3 years have passed since last update.

urllib3.exceptions.LocationParseError: Failed to parse への対策

Last updated at Posted at 2020-11-18

pipでインストールしたコマンドなど、Pythonで書かれたコードで起こる問題。どうやらURLをパースするのに失敗しているらしい。
どうにも局所的でかつユーザ側の環境による問題なのだが、それ故か対処法がまとまっていなかったのでメモしておく。

経緯

atcoder-tools(競プロ用のツール)を使っていたところ、11月のはじめあたりに突然正しく動作しなくなった。ツールにアプデがあったわけでは無い、というかそもそも自分ではupdateを挟んでいないのでupdateで動作しなくなったというわけではなさそう。本当に心当たりがないのでよくわからない。

エラーを見ると

  File "/usr/lib/python3/dist-packages/requests/models.py", line 380, in prepare_url
    scheme, auth, host, port, path, query, fragment = parse_url(url)
  File "/usr/lib/python3/dist-packages/urllib3/util/url.py", line 392, in parse_url
    return six.raise_from(LocationParseError(source_url), None)
  File "<string>", line 2, in raise_from
    urllib3.exceptions.LocationParseError

という感じのログがある。問題があるのはsixあるいはurllib3モジュールだろうと見当をつけて調べてみる。

対処法1

$ pip3 install six==1.15.0

sixモジュールのバージョンが古く、不具合を起こしている可能性がある。
module 'six' has no attribute 'ensure_str'みたいな感じのログが出てる人はまあこれだろう。sixensure_strが追加されるのは1.15.0以降なので以上のコマンドとなる。
実際これで改善された人もいるらしい。ただ、自分はこれでは直らなかった。これをしても変わらんよって人は以下の対処法2を試してみるといいかもしれない。

対処法2

$ pip3 insatll --upgrade urllib3

これまたurllib3のバージョンを最新に引き上げている。
自分はこれで正常に動作するようになったが、これをすれば直るとも言い切れない。

まとめ

かなりくだらない理由だったので悲しくなった。途中まで通常に動作していたのに、どこかのタイミングでバージョンダウングレードが挟まってしまったということだろうか。途中でコマンドの install,uninstall などを行ったが、そのせいかも?わからん

2
1
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
2
1