Open3
poetryのresolving dependenciesが異様に遅い
環境
Poetry Version: 1.1.12
OS: WSL2 Ubuntu-20.04
確認された現象
poetry で poetry add kaggle
を実行しようとしたところResolving dependencies...に少なくとも167秒以上かかっていることが分かった。(中断したため)
(.venv)user@hoge:~/kaggle$ poetry add kaggle -vvv
Using virtualenv: /home/user/kaggle/.venv
PyPI: 46 packages found for kaggle *
Using version ^1.5.12 for kaggle
Updating dependencies
Resolving dependencies...
1: fact: kaggle-competitions is 0.1.0
1: derived: kaggle-competitions
1: fact: kaggle-competitions depends on Pillow (^9.1.0)
1: fact: kaggle-competitions depends on torch (^1.11.0)
1: fact: kaggle-competitions depends on kaggle (^1.5.12)
1: selecting kaggle-competitions (0.1.0)
1: derived: kaggle (>=1.5.12,<2.0.0)
1: derived: torch (>=1.11.0,<2.0.0)
1: derived: Pillow (>=9.1.0,<10.0.0)
PyPI: 1 packages found for kaggle >=1.5.12,<2.0.0
PyPI: Getting info for kaggle (1.5.12) from PyPI
PyPI: No dependencies found, downloading archives
PyPI: Downloading sdist: kaggle-1.5.12.tar.gz
1: fact: kaggle (1.5.12) depends on certifi (*)
1: fact: kaggle (1.5.12) depends on python-dateutil (*)
1: fact: kaggle (1.5.12) depends on python-slugify (*)
1: fact: kaggle (1.5.12) depends on requests (*)
1: fact: kaggle (1.5.12) depends on six (>=1.10)
1: fact: kaggle (1.5.12) depends on tqdm (*)
1: fact: kaggle (1.5.12) depends on urllib3 (*)
1: selecting kaggle (1.5.12)
1: derived: urllib3
1: derived: tqdm
1: derived: six (>=1.10)
1: derived: requests
1: derived: python-slugify
1: derived: python-dateutil
1: derived: certifi
PyPI: No release information found for urllib3-0.3, skipping
PyPI: No release information found for urllib3-0.3.1, skipping
PyPI: No release information found for urllib3-0.4.0, skipping
PyPI: No release information found for urllib3-0.4.1, skipping
PyPI: 68 packages found for urllib3 *
PyPI: No release information found for tqdm-2.0.0.dev0, skipping
PyPI: 126 packages found for tqdm *
PyPI: 7 packages found for six >=1.10
^C 1: Version solving took 167.460 seconds.
1: Tried 1 solutions.
暫定的な解決策
issue#2094でかなり長期間報告がされているので根深そうな問題っぽい?
このissue内で提示されていた
にある以下のコマンドを実行し、一時的にipv6での通信を無効にすると爆速になった。sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
考えられる原因
- ネットワークの設定の問題でipv6の通信が利用できない(のに利用しようとしている)
- こちらはOKだが接続先のリポジトリがipv6非対応
- poetry側でipv4/ipv6でのネットワーク通信に関する制御をしていない
WSL2では現在ipv6のみのアドレスに到達できないらしい。
WSLに挙げられている。Very slow network speed on WSL2 #4901に報告されている、
/etc/resolv.conf
にnameserver 8.8.8.8
を加えるとうまくいった。
あくまでworkaroundなので根本的な解決にはなっていない…