日記

日本語の勉強のためのブログ

pipでFastTextをインストールするとエラー(error: legacy-install-failure)

1. 問題

Windows上のpipでFastTextをインストールしようとするとerror: legacy-install-failureというエラーが発生する。
※エラー文は長いのでこのあと示す

1.1 補足: colabではインストールできる

なおgoogle colabで試したところ普通にインストールできた。

colabでの実行結果。ここを押して展開

!pip install fasttext

Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/
Collecting fasttext
  Downloading fasttext-0.9.2.tar.gz (68 kB)
     |████████████████████████████████| 68 kB 3.0 MB/s 
Collecting pybind11>=2.2
  Using cached pybind11-2.10.1-py3-none-any.whl (216 kB)
Requirement already satisfied: setuptools>=0.7.0 in /usr/local/lib/python3.7/dist-packages (from fasttext) (57.4.0)
Requirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from fasttext) (1.21.6)
Building wheels for collected packages: fasttext
  Building wheel for fasttext (setup.py) ... done
  Created wheel for fasttext: filename=fasttext-0.9.2-cp37-cp37m-linux_x86_64.whl size=3158283 sha256=38f688c24fffd27eb8f933767634d3642c2e9809dd66d455ad824265e10103ac
  Stored in directory: /root/.cache/pip/wheels/4e/ca/bf/b020d2be95f7641801a6597a29c8f4f19e38f9c02a345bab9b
Successfully built fasttext
Installing collected packages: pybind11, fasttext
Successfully installed fasttext-0.9.2 pybind11-2.10.1

2. 環境

  • Windows 11 Pro
    • バージョン: 22H2
    • OSビルド: 22621.819
  • Python 3.10.5
  • pip 22.3.1
    • jupyterやpandas, sklearn, gensimなどインストール済

3. エラー文

PS C:\Users\ユーザ名> pip install fasttext
Collecting fasttext
  Using cached fasttext-0.9.2.tar.gz (68 kB)
  Preparing metadata (setup.py) ... done
Requirement already satisfied: pybind11>=2.2 in c:\users\<ユーザ名>\appdata\local\programs\python\python310\lib\site-packages (from fasttext) (2.10.1)
Requirement already satisfied: setuptools>=0.7.0 in c:\users\<ユーザ名>\appdata\local\programs\python\python310\lib\site-packages (from fasttext) (58.1.0)
Requirement already satisfied: numpy in c:\users\<ユーザ名>\appdata\local\programs\python\python310\lib\site-packages (from fasttext) (1.23.4)
Building wheels for collected packages: fasttext
  Building wheel for fasttext (setup.py) ... error
  error: subprocess-exited-with-error

  × python setup.py bdist_wheel did not run successfully.
  │ exit code: 1
  ╰─> [70 lines of output]
      C:\Users\<ユーザ名>\AppData\Local\Programs\Python\Python310\lib\site-packages\setuptools\dist.py:717: UserWarning: Usage of dash-separated 'description-file' will not be supported in future versions. Please use the underscore name 'description_file' instead

(中略)

      error: command 'C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.33.31629\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for fasttext
  Running setup.py clean for fasttext
Failed to build fasttext
Installing collected packages: fasttext
  Running setup.py install for fasttext ... error
  error: subprocess-exited-with-error

  × Running setup.py install for fasttext did not run successfully.
  │ exit code: 1
  ╰─> [70 lines of output]

(中略)

      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: legacy-install-failure

× Encountered error while trying to install package.
╰─> fasttext

note: This is an issue with the package mentioned above, not pip.
hint: See above for output from the failure.

※ちなみに中略部分では、C/C++コードのコンパイルエラー(識別子ssize_tが見つかりません、など)が何行も出力されていた。

4. 原因

おそらくPythonのバージョンが高すぎることが原因。
以下では同じようなエラーが出た報告がなされているが、バージョンを下げることで対処できている。

teratail.com

5. 本当にバージョンのせいなのか調べる

現在使用している環境のPythonをバージョンダウンするのは少し面倒なので、逆にGoogle ColabのPythonバージョン(3.7だったはず)を上げてみる。
バージョンアップ方法は以下ページに載っている。Minicondaというものを入れることによりバージョンを上げているようだ。

krhb.hatenablog.com

Minicondaで用意されているPythonバージョン3.10が最新のようなので (3.11入れようとしたらエラーが出た)、それをColabにインストールした。バージョンはPython 3.10.4であった。
その上でpip install fasttextを行うと、やはりエラーが出てインストールできないことが確認できた。

!pip install fasttext

Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/
Collecting fasttext
  Downloading fasttext-0.9.2.tar.gz (68 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 68.8/68.8 kB 3.3 MB/s eta 0:00:00
  Preparing metadata (setup.py) ... done
Collecting pybind11>=2.2
  Using cached pybind11-2.10.1-py3-none-any.whl (216 kB)
Requirement already satisfied: setuptools>=0.7.0 in /usr/local/lib/python3.10/site-packages (from fasttext) (65.5.0)
Collecting numpy
  Downloading numpy-1.23.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (17.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 17.1/17.1 MB 40.1 MB/s eta 0:00:00
Building wheels for collected packages: fasttext
  error: subprocess-exited-with-error
  
  × python setup.py bdist_wheel did not run successfully.
  │ exit code: 1
  ╰─> See above for output.
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  Building wheel for fasttext (setup.py) ... error
  ERROR: Failed building wheel for fasttext
  Running setup.py clean for fasttext
Failed to build fasttext
Installing collected packages: pybind11, numpy, fasttext
  Running setup.py install for fasttext ... done
  DEPRECATION: fasttext was installed using the legacy 'setup.py install' method, because a wheel could not be built for it. A possible replacement is to fix the wheel build issue reported above. Discussion can be found at https://github.com/pypa/pip/issues/8368
Successfully installed fasttext-0.9.2 numpy-1.23.5 pybind11-2.10.1
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv

図1. エラー吐いたcolab