ものづくりのブログ

うちのネコを題材にしたものづくりができたらいいなと思っていろいろ奮闘してます。

【python】`ModuleNotFoundError: No module named '_ctypes'`というエラーを回避する方法

python の開発環境を移設したところ、新環境で以下のエラーに引っかかってしまったので、ここに回避方法をメモします。

問題のエラー

  File "/xxxxxx/.anyenv/envs/pyenv/versions/3.9.6/lib/python3.9/ctypes/__init__.py", line 8, in <module>
    from _ctypes import Union, Structure, Array
ModuleNotFoundError: No module named '_ctypes'

原因

  • Pythonをビルドする際、libffiが見つからない場合は _ctypes のビルドはスキップ
  • _ctypes がビルドされていない Python から _ctypes を利用しようとすると本件のエラーが発生

対策

  • libffi をインストールした上で Python を再ビルド・再インストールする必要

回避策

python アンインストール

いったん python をアンインストールします。

$ pyenv uninstall 3.9.6

libffi-dev インストール

libffi-dev をインストールします。

$ sudo apt install -y libffi-dev

再度 python インストール

python を再度インストールします。

$ pyenv install 3.9.6
$ pyenv local 3.9.6
$ python --version

python パッケージインストール

エラーになったパッケージを再度インストールします。

$ pip install --upgrade pip
$ pip install --upgrade setuptools
$ pip install -r requirements.txt