GCE上のインスタンスで、pyenvを使ってpython3.9.7をインストールし、いざ実装したコードを実行しようとしたら、以下のようなエラーが発生しました。
ModuleNotFoundError: No module named '_ctypes'
この現象について、様々な解決法がネットに転がっていますが、私が解決した方法について書いておきます。
「Homebrewでインストールしたpyenv」の場合に適応できるかもしれません。
以下の手順は、OSがDebian、Homebrewでpyenvをインストールした環境を前提としてます。
brew install pyenv
ビルドしたpythonのアンインストール
この記事を見る限りでは、pythonのビルドの時点で何かおかしいことが起きていそう
https://notemite.com/python/no-module-named-ctypes/
なので、インストールした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
私はこれで正常に動きました!