LoginSignup
4
1

More than 5 years have passed since last update.

pyenv installすると_ctypes云々でエラー in archlinux

Last updated at Posted at 2018-08-01

ある日

会社のarch linux環境でpyenvを入れたら pyenv install 3.7.1 でコケるようになってしまった
ぐぐっても情報なかったので参考になれば幸いです

結論

$ sudo pacman -S libffi
$ LDFLAGS="-L/usr/lib" CFLAGS="-I/usr/lib/libffi-3.2.1/include -O2" pyenv install 3.7.1
Downloading Python-3.7.1.tar.xz...
-> https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz
Installing Python-3.7.1...
Installed Python-3.7.1 to /home/kc5m/.pyenv/versions/3.7.1

過程

$ pyenv install 3.7.1
...
ModuleNotFoundError: No module named '_ctypes'
...

上記のようなエラーが出て早速ぐぐると以下の記事が。
https://qiita.com/hitochan777/items/941d4422c53978b275f8
なるほどlibffiを入れれば良いのだなと # pacman -S libffi をしてみたものの同じエラーで止まる。3.6.5でも同様だ。

どうせいつものncurses5互換ライブラリの問題だろと入れてみたものの変わらず
とりあえずlibffiパッケージに含まれているファイルを確認してみる

$ pacman -Fl libffi
libffi usr/
libffi usr/lib/
libffi usr/lib/libffi-3.2.1/
libffi usr/lib/libffi-3.2.1/include/
libffi usr/lib/libffi-3.2.1/include/ffi.h
libffi usr/lib/libffi-3.2.1/include/ffitarget.h
libffi usr/lib/libffi.so
libffi usr/lib/libffi.so.6
libffi usr/lib/libffi.so.6.0.4
libffi usr/lib/pkgconfig/
...

ここでヘッダファイルが変な位置(/usr/includeに配置されると思ってた)にあると気がつく
とりあえず試してみる

$ LDFLAGS="-L/usr/lib" CFLAGS="-I/usr/lib/libffi-3.2.1/include -O2" pyenv install 3.7.1
Downloading Python-3.7.1.tar.xz...
-> https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz
Installing Python-3.7.1...
Installed Python-3.7.1 to /home/kc5m/.pyenv/versions/3.7.1

通った。
めでたしめでたし

余談

自宅環境の幾つかのarchlinuxでは上記エラーが再現しなかった。
しかもそれら環境にはlibffiが入っていない。
:thinking:

4
1
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
4
1