ImportError: libffi.so.6: cannot open shared object file: No such file or directory
下記などを参考にて、遅ればせながらUbuntu18 –> 20へアップグレード終わりました。
見た目もコントラストがはっきりした感じになり好きな感じです。
アップグレード作業は何かと緊張するものですが、一応無事に終わりこれでひと安心です。
Jupyter labで下記エラーが出た
1箇所だけ、pyenv + pipenvで管理しているPythonのプロジェクトで、Jupyter labにエラーが出ました。
[9620]$ jupyter lab Traceback (most recent call last): File "/home/toshiya/.local/share/virtualenvs/keiba-fIgOWeR2/bin/jupyter-lab", line 5, in <module> from jupyterlab.labapp import main File "/home/toshiya/.local/share/virtualenvs/keiba-fIgOWeR2/lib/python3.7/site-packages/jupyterlab/__init__.py", line 7, in <module> from .labapp import LabApp File "/home/toshiya/.local/share/virtualenvs/keiba-fIgOWeR2/lib/python3.7/site-packages/jupyterlab/labapp.py", line 15, in <module> from jupyter_server.serverapp import flags File "/home/toshiya/.local/share/virtualenvs/keiba-fIgOWeR2/lib/python3.7/site-packages/jupyter_server/serverapp.py", line 72, in <module> from jupyter_server.services.kernels.kernelmanager import ( File "/home/toshiya/.local/share/virtualenvs/keiba-fIgOWeR2/lib/python3.7/site-packages/jupyter_server/services/kernels/kernelmanager.py", line 15, in <module> from jupyter_client.multikernelmanager import AsyncMultiKernelManager File "/home/toshiya/.local/share/virtualenvs/keiba-fIgOWeR2/lib/python3.7/site-packages/jupyter_client/__init__.py", line 6, in <module> from .asynchronous import AsyncKernelClient # noqa File "/home/toshiya/.local/share/virtualenvs/keiba-fIgOWeR2/lib/python3.7/site-packages/jupyter_client/asynchronous/__init__.py", line 1, in <module> from .client import AsyncKernelClient # noqa File "/home/toshiya/.local/share/virtualenvs/keiba-fIgOWeR2/lib/python3.7/site-packages/jupyter_client/asynchronous/client.py", line 6, in <module> from jupyter_client.channels import HBChannel File "/home/toshiya/.local/share/virtualenvs/keiba-fIgOWeR2/lib/python3.7/site-packages/jupyter_client/channels.py", line 12, in <module> import zmq.asyncio File "/home/toshiya/.local/share/virtualenvs/keiba-fIgOWeR2/lib/python3.7/site-packages/zmq/__init__.py", line 61, in <module> _load_libzmq() File "/home/toshiya/.local/share/virtualenvs/keiba-fIgOWeR2/lib/python3.7/site-packages/zmq/__init__.py", line 23, in _load_libzmq import ctypes File "/home/toshiya/.pyenv/versions/3.7.7/lib/python3.7/ctypes/__init__.py", line 7, in <module> from _ctypes import Union, Structure, Array ImportError: libffi.so.6: cannot open shared object file: No such file or directory
Qiitaに情報あり、助かりました。
上記を参考に、私がこのプロジェクトで使っているPythonのバージョンは3.7.7だったので
[9621]$ pyenv version 3.7.7 (set by PYENV_VERSION environment variable) [9623]$ python --version Python 3.7.7
同じバージョンのPythonを再インストールすることで、このエラーは解決するようです。
[9624]$ pyenv install 3.7.7 pyenv: /home/toshiya/.pyenv/versions/3.7.7 already exists continue with installation? (y/N) y Downloading Python-3.7.7.tar.xz... -> https://www.python.org/ftp/python/3.7.7/Python-3.7.7.tar.xz Installing Python-3.7.7... Installed Python-3.7.7 to /home/toshiya/.pyenv/versions/3.7.7
これで元通りJupyter labも使えるようになりました。
poetryでは上記方法でも駄目な場合もありました
poetry環境下では同じエラーが出ましたが、上記方法では上手く修復できませんでした。
こちらを参考にすることで上手く修復できました。
このコマンド等で下調べして、
$ find /usr/lib -name "libffi.so*" $ ls -l /usr/lib/x86_64-linux-gnu
手持ちの環境に合うように以下のコマンドを実行するとpoetry run jupyter labも起動できました。
$ sudo ln -s /usr/lib/x86_64-linux-gnu/libffi.so.7 /usr/lib/x86_64-linux-gnu/libffi.so.6
以上になります