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