Open3

poetryのresolving dependenciesが異様に遅い

MangoLassiMangoLassi

環境

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内で提示されていた
https://stackoverflow.com/questions/50787522/extremely-slow-pip-installs
にある以下のコマンドを実行し、一時的にipv6での通信を無効にすると爆速になった。

sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1

考えられる原因

  1. ネットワークの設定の問題でipv6の通信が利用できない(のに利用しようとしている)
  2. こちらはOKだが接続先のリポジトリがipv6非対応
  3. poetry側でipv4/ipv6でのネットワーク通信に関する制御をしていない