PythonでCSPADEを使えるpycspadeのインストールで「error: command ‘gcc’ failed with exit status 1」にハマった
C-SPADEというアルゴリズムをPythonで使えるpycspadeというライブラリを見つけたので使ってみる。
インストールでハマったのでまずはインストールについて。
Contents
環境
- macOS 10.13.6
- Python 3.7.1
- conda 4.5.12
- pip 19.0.3
- Homebrew 2.0.2
TLDR;
error: command 'gcc' failed with exit status 1
エラーでpip経由でのインストールができなかったのが、Homebrew経由で最新のgcc(8.3)をインストールし、パスを通したらインストールがうまくいった。
やったことまとめ
$ brew install gcc
$ ln -s /usr/local/bin/gcc-8 /usr/local/bin/gcc
$ ln -s /usr/local/bin/g++-8 /usr/local/bin/g++
$ vi ~/.zprofile
# 以下を追記
export PATH=$PATH:/usr/local/bin
$ source ~/.zprofile
$ gcc -v
$ pip install Cython pycspade
pip install→コケる
ドキュメントに沿って、
$ pip install Cython pycspade
エラーメッセージは↓のような感じ。
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
error: command 'gcc' failed with exit status 1
Command "/anaconda3/bin/python -u -c "import setuptools, tokenize;__file__='/private/var/folders/yj/zvgpdc556qb6f5dxptcstrrw0000gn/T/pip-install-be6hkeoe/pycspade/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /private/var/folders/yj/zvgpdc556qb6f5dxptcstrrw0000gn/T/pip-record-x_00avdf/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /private/var/folders/yj/zvgpdc556qb6f5dxptcstrrw0000gn/T/pip-install-be6hkeoe/pycspade/
gcc
周りでエラーが起きている?
まず、gccがインストールされているか確認
$ which gcc
/usr/bin/gcc
$ pip install -U pip
$ conda update conda
xcode-selectのインストールも試す
こちらの記事にて記載されていた、Xcodeのインストールも試してみる。
$ xcode-select --install
→ 結果は変わらず。
別の記事で目にした下記コマンドも走らせてみる。
$ brew install pkg-config libffi
$ export PKG_CONFIG_PATH=/usr/local/Cellar/libffi/3.0.13/lib/pkgconfig/
ここで、xcode-selectのgccでは動かないだけでは? という仮説が湧いたので、homebrewのgccを使ってみる。
homebrew経由でgccの最新版をインストールし、パスを書き換える
$ brew install gcc
$ ls /usr/local/bin | grep gcc
gcc-8
gcc-ar-8
gcc-nm-8
gcc-ranlib-8
x86_64-apple-darwin17.7.0-gcc-8
x86_64-apple-darwin17.7.0-gcc-8.3.0
x86_64-apple-darwin17.7.0-gcc-ar-8
x86_64-apple-darwin17.7.0-gcc-nm-8
x86_64-apple-darwin17.7.0-gcc-ranlib-8
$ ls /usr/local/bin | grep g++
g++-8
x86_64-apple-darwin17.7.0-g++-8
$ ln -s /usr/local/bin/gcc-8 /usr/local/bin/gcc
$ ln -s /usr/local/bin/g++-8 /usr/local/bin/g++
$ vi ~/.zprofile
# 以下を追記
export PATH=$PATH:/usr/local/bin
$ source ~/.zprofile
.bash_profile
などを書き換えるうまく通っているか確認
$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/Cellar/gcc/8.3.0/libexec/gcc/x86_64-apple-darwin17.7.0/8.3.0/lto-wrapper
Target: x86_64-apple-darwin17.7.0
Configured with: ../configure --build=x86_64-apple-darwin17.7.0 --prefix=/usr/local/Cellar/gcc/8.3.0 --libdir=/usr/local/Cellar/gcc/8.3.0/lib/gcc/8 --disable-nls --enable-checking=release --enable-languages=c,c++,objc,obj-c++,fortran --program-suffix=-8 --with-gmp=/usr/local/opt/gmp --with-mpfr=/usr/local/opt/mpfr --with-mpc=/usr/local/opt/libmpc --with-isl=/usr/local/opt/isl --with-system-zlib --with-pkgversion='Homebrew GCC 8.3.0' --with-bugurl=https://github.com/Homebrew/homebrew-core/issues --disable-multilib
Thread model: posix
gcc version 8.3.0 (Homebrew GCC 8.3.0)
$ pip install Cython pycspade
というわけで…
元々入っていたgcc、xcode-selectでインストールしたgccのバージョンが古かったのが原因だと思われる。(古いバージョンが何だったかはメモるのを忘れていたが、おそらく4.x系だった気がする…)
肝心のpycspadeを使ってのアレコレは次回以降。
ディスカッション
コメント一覧
まだ、コメントがありません