0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

pip install fasttext できない

Last updated at Posted at 2022-06-02

fastText は単語埋め込みやテキスト分類のための定番NLPツールです。
しかし導入でハマるという声をよく聞きます。

pip install fasttext しようとするとerror: command 'gcc' failed with exit status 1 のようなエラーを吐いてインストールに失敗する場合があります。

リポジトリをクローンしてインストールしたり conda を使うといった方法でインストール自体は可能なのですが、 poetry や requirements.txt でシンプルに管理したかったり(Dockerを使う場合は) Dockerfile にごちゃごちゃ書きたくなかったりするので、pip 一発で入れられたほうが嬉しいシーンがあります。

原因

インストールに必要な GCC のバージョンが古い(or 入っていない)ことが原因です。fastText ではビルド時に C++14 の機能を使うため、GCC 6.1 以降が必要になります。

gcc --version

で6.1 未満の場合やそもそもコマンドが見つからない場合、アップデート/インストールしましょう。

centos7 には GCC 4.x が入っていたり, MacOS は初期状態で C(++)コンパイラが無効なのでこの現象に遭遇するようです。

CentOS

centos の人は下記のコマンドでより新しい gcc が利用できます。

yum install centos-release-scl
yum install devtoolset-8
scl enable devtoolset-8 -- bash

MacOS

MacOS Mojave以降で、Cコンパイラが未インストールの場合、gcc --version すると

xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

のようなエラーが出るので、ターミナルで

xcode-select --install

をして開発者ツールをインストールし、 gcc, g++ のパスが通るようにしてください。

補足

  • pip でのインストールではこのようなエラーが生じる場合があるので、リポジトリを clone してインストールする方法を推奨する記事をよく見ます。
  • docker にインストールする場合にもコンパイラが必要になります。slim イメージだと gcc が入っていなかったりするので注意してください。
  • 同じ現象でハマっている人をよく見るので公式ドキュメントのインストールガイドい書いておいてほしいですね......

参考

以前は そもそも pip でインストールすること自体に不具合があったようですが、こちらの方は fasttext v0.9 で修正されています。
fastTextをpipインストールしてはいけない話(2019/4/11現在、pyenv環境)

言及されている Issue
https://github.com/facebookresearch/fastText/issues/1052

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?