【python】「ModuleNotFoundError: No module named ‘_ctypes’」に対する対応

python

GCE上のインスタンスで、pyenvを使ってpython3.9.7をインストールし、いざ実装したコードを実行しようとしたら、以下のようなエラーが発生しました。

ModuleNotFoundError: No module named '_ctypes'

この現象について、様々な解決法がネットに転がっていますが、私が解決した方法について書いておきます。

「Homebrewでインストールしたpyenv」の場合に適応できるかもしれません。
以下の手順は、OSがDebian、Homebrewでpyenvをインストールした環境を前提としてます。

brew install pyenv

ビルドしたpythonのアンインストール

この記事を見る限りでは、pythonのビルドの時点で何かおかしいことが起きていそう

【Python3】_ctypes と libffi のインストールに苦しんだ記録 – notemite.com

なので、インストールしたpythonを一旦アンインストールします。

# pyenv uninstall [version]
pyenv uninstall 3.9.7   # 私の場合

必要なライブラリのインストール

pythonのビルドに必要なライブラリをインストールします。
色々とインストールしますが、その際に鍵となるライブラリが libffi というものになります。
しかしながら、Homebrewでpyenvをインストールした際に、Homebrew経由で libffi がインストールされている場合があります。
これがpythonの正常なビルドを邪魔する模様なので、一旦Homebrewでインストールした libffi をアンインストールしておきます。

brew uninstall libffi

それから、必要なライブラリをインストールしましょう。

sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev python-openssl git

pythonの再インストール

ここまでしたら、pyenvでpythonを再インストールしましょう。

# pyenv install [version]
pyenv install 3.9.7

私はこれで正常に動きました!

タイトルとURLをコピーしました