かつかれーのメモ帳

実験ノートか勉強記録

sudo出来ない環境でModuleNotFoundError: No module named '_ctypes'を解決する

要約

とあるスパコンで前回の記事(Python環境が訳わからなくならないための自分用メモ - かつかれーのメモ帳)に従ってPython環境を作った後、Neovimの環境構築をしていたところ、

python -m pip install neovim

の段階で表題のエラーが発生。
調べてみるとlibffiが無いのがいけないらしい。そのせいで「_ctypesが使えないpython」としてビルドされてしまった感じ。

pyenv uninstall 3.9.2

して、以下の手順の通りlibffiを入れてからpythonを入れ直すことで解決できた。

手順

普通にローカルにダウンロードして解凍、ビルド、インストール。もちろん$HOME配下である必要がある。

wget https://github.com/libffi/libffi/releases/download/v3.3/libffi-3.3.tar.gz
tar xvfz libffi-3.3.tar.gz
cd libffi-3.3
./configure --prefix=$HOME/local/libffi/3_3
make
make install

すると~/local内にlibffi/3_3/が出来る。

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/local/libffi/3_3/lib64
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$HOME/local/libffi/3_3/lib/pkgconfig

をbashrcに追記、sourceしてから

LDFLAGS="-L $HOME/local/libffi/3_3/lib64" CPPFLAGS="-I $HOME/lo
cal/libffi/3_3/include" pyenv install 3.9.2

python 3.9.2を入れ直せば完了。pipも正常に通った。