LoginSignup
5
2

More than 5 years have passed since last update.

import numpyでPyFPE_jbufが無いって言われる件

Last updated at Posted at 2019-01-23

ズバリの記載がネットで見つけづらかったので書いておく。

このエラー。

mtrand.cpython-35m-arm-linux-gnueabihf.so: undefined symbol: PyFPE_jbuf

当方は以下の環境で発生。
・RaspberryPi Zero Stretch Lite
・pyenv virtualenv
・Python 3.4.8、3.5.6
・numpy 1.14.5

import numpy を行うと上記のエラーで落ちる。

pyenv 環境でない通常の?OS直下のpython&numpyは普通に動く。
ネットではpyenv以外のnumpyと衝突しているとか載っているが、全然上手くいかない。
色々と回り道とトライ&エラーの結局、以下のページを参考してPythonインストール時のコンパイルオプションを指定することで対応できた。
undefined symbol: PyFPE_jbuf on stock Ubuntu 17.10
pyenv Python 2.7 install to match Ubuntu server settings
Fix fpectl-induced ABI breakage

今回の事象は、いまいちスッキリしないが以下の感じ?
・import numpy すると下の方で mtrand が import される。
・mtrand は PyFPE_jbuf を呼んでいる。
・Python が --with-fpectl なしでビルドされていると PyFPE_jbuf は作成されていない。
・結果落ちる。

mtrand.cpython-35m-arm-linux-gnueabihf.so の中を見ると確かに呼んでいる。

$ nm mtrand.cpython-35m-arm-linux-gnueabihf.so | grep PyFPE_jbuf
         U PyFPE_jbuf

 
 
こちらで上手くいった方法。
--with-fpectl 以外のオプションはやってみて拙かったら後で変える体で。(分かってない)

export PYTHON_CONFIGURE_OPTS="--enable-ipv6\
                              --enable-unicode=ucs4\
                              --with-dbmliborder=bdb:gdbm\
                              --with-system-expat\
                              --with-system-ffi\
                              --with-fpectl"
pyenv install -f 3.5.6
pyenv virtualenv 3.5.6 p356
source activate p356
pip install numpy===1.14.5
python
> import numpy
うっし!

 
 

5
2
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
5
2